11

数字のみ、つまり整数で構成される文字列の入力があります。1、2、25 以外のすべての数字を受け入れる正規表現を作成するにはどうすればよいですか?

これを BeanIO (正規表現をサポートする)のレコード ID内で使用して、特定の値を持ついくつかのレコードをスキップしたいと考えています。

私はこの点に到達しまし^(1|2|25)$たが、これが一致するものの反対が欲しかった.

4

4 に答える 4

19

正規表現がこれに最適なツールであるというわけではありませんが、もしあなたが主張するなら...

否定先読みを使用します。

/^(?!(?:1|2|25)$)\d+/

ここで実際に見てください:http://regexr.com/39df2

于 2014-08-28T16:19:20.760 に答える
3

次のようなパターンを使用できます。

^([03-9]\d*|1\d+|2[0-46-9]\d*|25\d+)$

または、正規表現エンジンがサポートしている場合は、次のように否定先読みアサーション( (?!…)) を使用できます。

^(?!1$|25?$)\d+$

ただし、コード内の数値を単純に解析し、それが禁止されている値の 1 つと等しくないことを確認する方がよいでしょう。

于 2014-08-28T16:20:12.507 に答える