-1

我正在使用^(^[a-z]?[a0-z9]+[.|-][a0-z9]+[a-z]+[.|-][a0-z9]+[a-z]?$)+$,这迫使用户在他的表达中输入 2 连字符(-)....

但我需要正则表达式可以在他的表达式中允许最多 2 个连字符和最少一个连字符....

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,1}[^-]*$

String1:abc-pqr,String2:aaa-bbb,String3 aaa-bbb-ccc-ddd,其中String 1和2有效,3无效?

这允许字符串 1 和 2。但不允许字符串 3。

于 2013-02-20T11:07:56.100 回答
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 回答