2016-12-21 3 views
5

正規表現の反対を取得する簡単な方法はありますか、または私が持っているものの逆を生成する新しい正規表現を作成する必要はありますか?正規表現ではないものを簡単に取り除く

たとえば、この正規表現を使用して、通貨の値が正しいことを確認します($記号なし)。

/^[0-9]+(\.[0-9][0-9]?)?$/ 

このパターンの外にあるものはすべて削除します。例えば、ユーザが文字を入力するか、2つの期間を入力しようとする。 7.50.6、望ましくない文字を削除したいそれ、どうやったら出来るの?

+1

どのように正規表現を使用していますか? – Isaac

+0

私は現在、myValue.test(myRegex)をテストするためにそれを使用しています。しかし、私のReactアプリでは、望ましくない値がユーザーによって入力されるのを完全に防ぎたいと思っています。 – Sam

+0

おそらく 'value = value.match(/ [0-9] +(\。[0-9] {1,2})?/)[0]'を試してみてください。 – Isaac

答えて

2

あなたはこれを間違った方向に行っていると思います。まず第一に、このような方法で入力エラーを隠そうとするのは悪い考えです。ユーザーが数字を入力して余分なドットを入れなければならない場合、どの部分が良い部分であり、どれが悪いのかを教えてくれるでしょうか?あなたは、入力に間違ったことがあるとユーザに伝える方がよいでしょう。

しかし、通常は正規表現を使用して、どのように見えるかを指定し、キャプチャグループを使用して保持したい重要な部分を指定します。

これはキャプチャグループです:([a-z0-9])@example.com;これはキャプチャしていないグループです:(?:hello|hi)

電話番号の場合、重要なのは数字だけなので、それをキャプチャして複数の形式の中間の文字を受け入れることができます。郵便番号の簡単な例は次のとおりです。

([A-Z][0-9][A-Z]) ?([0-9][A-Z][0-9]) 

次に、取得したグループを結合するだけです。存在する場合、スペースはキャプチャされません。

MDNでさらに多くの例を見つけてください。

+0

あなたの提案にもかかわらず、正規表現 – Isaac

+0

私は何も隠そうとしていません。私はそれらを削除しています。たとえば、ユーザーが電話番号に文字を入力してから修正するように指示することのポイントは何ですか。 Reactはすべて状態の管理に関するものなので、ユーザーが手紙を入力したことを検出して自分の状態に入れないことができます。これにより、厳密に管理された入力フィールドを持つことができます。 – Sam

+0

確かに、正規表現を逆にする方法には答えません。私はそれが何か価値のあるものであることを非常に疑う - 私はこれを[XY問題](http://xyproblem.info/)とみなしている。 –

関連する問題