1

受け入れたいし0-9 ,-

ので、私は持っています:

[0-9-,]+

-ただし、連続して1 つだけ存在するようにしたいので、 --. これどうやってするの?

4

3 に答える 3

2

先読みアサーションを使用します。

(?!.*--)[0-9,-]+

また、文字列全体が確実に一致するようにアンカーを使用する必要がある場合があります。

^(?!.*--)[0-9,-]+$
于 2013-02-13T12:00:34.087 に答える
2

必要なものはこれだと思います:

^\d+(-\d+)?(,\d+(-\d+)?)*$

これが行うことは次のとおりです。

\d+任意の整数 (1 桁以上)

(-\d+)?-a の後に整数が続く任意の部分

(,\d+(-\d+)?)*,上記のパターンの組み合わせが続くゼロ以上の出現。

注:必要なエスケープを追加します\

于 2013-02-13T12:22:33.333 に答える
0

これでよろしいですか ?

^[0-9,]*-?[0-9,]*$

grepで簡単なテストを行いました:

kent$  echo "1-234-
1234-
3-24442-34
12341234"|grep -E '^[0-9,]*-?[0-9,]*$'
1234-
12341234
于 2013-02-13T12:24:58.497 に答える