-1

私は を使用して^(^[a-z]?[a0-z9]+[.|-][a0-z9]+[a-z]+[.|-][a0-z9]+[a-z]?$)+$います。この強制ユーザーは、式に 2 ハイフン (-) を入力します ....

しかし、正規表現では、彼の表現で最大2つのハイフンと最小1つのハイフンを許可できる必要があります....

4

3 に答える 3

2

これは単純な再実装です。

/^[^-]+(-[^-]+){1,2}$/

そしてテスト結果:

"123".match(/^[^-]+(-[^-]+){1,2}$/)
null

"123-123".match(/^[^-]+(-[^-]+){1,2}$/)
["123-123", "-123"]

"123-123-123".match(/^[^-]+(-[^-]+){1,2}$/)
["123-123-123", "-123"]

"123-123-123-123".match(/^[^-]+(-[^-]+){1,2}$/)
null

また、一方を他方からコピーするだけの場合は、自分で作成するようにしてください。
そうでない場合は、削除して再起動する必要があります。

于 2013-02-20T11:04:10.793 に答える
0

この正規表現は機能するはずです...

/^[^-]*-[^-]*-[^-]*$/

これは、ハイフン (0 回以上) 以外のすべてをキャプチャし、次にハイフン、それ以外、さらに別のハイフン、その他すべてをキャプチャすることによって機能します。文字列全体にハイフンが含まれないようにするための開始マーカーと終了マーカーがあります。

このように崩れ...

/       # begin regex
^       # start of string
[^-]*   # not hyphen ([^-]), zero or more times (*)
-       # hyphen
[^-]*   # not hyphen ([^-]), zero or more times (*)
-       # hyphen
[^-]*   # not hyphen ([^-]), zero or more times (*)
$       # end of string
/       # end regex
于 2013-02-20T11:20:58.307 に答える