我正在使用^(^[a-z]?[a0-z9]+[.|-][a0-z9]+[a-z]+[.|-][a0-z9]+[a-z]?$)+$
,这迫使用户在他的表达中输入 2 连字符(-)....
但我需要正则表达式可以在他的表达式中允许最多 2 个连字符和最少一个连字符....
我正在使用^(^[a-z]?[a0-z9]+[.|-][a0-z9]+[a-z]+[.|-][a0-z9]+[a-z]?$)+$
,这迫使用户在他的表达中输入 2 连字符(-)....
但我需要正则表达式可以在他的表达式中允许最多 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
如果你只是从其他人那里复制一个,那么你应该尝试自己写一个。
如果没有,您应该删除它并重新启动。
^[^-]*-+[^-]*-{0,1}[^-]*$
String1:abc-pqr,String2:aaa-bbb,String3 aaa-bbb-ccc-ddd,其中String 1和2有效,3无效?
这允许字符串 1 和 2。但不允许字符串 3。
这个正则表达式应该可以工作......
/^[^-]*-[^-]*-[^-]*$/
它的工作原理是捕获除连字符(零次或多次)之外的任何内容,然后是一个连字符,然后是其他任何内容,然后是另一个连字符,然后是其他任何内容。它有一个开始和结束标记,以确保整个字符串不再包含连字符。
就这样崩溃了……
/ # 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