正则表达式允许 - 不超过2次

时间:2013-02-20 10:57:18

标签: javascript regex jsp

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

但是我需要正则表达式允许在他的表达中最多2个超级和最小的连字符....

3 个答案:

答案 0 :(得分: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

如果你只是从别人那里复制一个,那么你应该试着自己写一个 如果没有,您应该将其删除并重新启动。

答案 1 :(得分:0)

^[^-]*-+[^-]*-{0,1}[^-]*$

String1:abc-pqr, String2:aaa-bbb, String3 aaa-bbb-ccc-ddd, 字符串1和2有效,3无效?

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

答案 2 :(得分: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