Javascript allow的正则表达式-不超过2次

Javascript allow的正则表达式-不超过2次,javascript,regex,jsp,Javascript,Regex,Jsp,我正在使用^(^[a-z]?[a0-z9]+[.|-][a0-z9]+[a-z]+[.|-][a0-z9]+[a-z]?$)+$,这强制用户在其表达式中键入2个连字符(-) 但是我需要正则表达式可以在他的表达式中允许最多2个hypen和最少一个连字符….这是一个简单的重新实现 /^[^-]+([^-]+){1,2}$/ 测试结果如下: "123".match(/^[^-]+(-[^-]+){1,2}$/) null "123-123".match(/^[^-]+(-[^-]+){1,2}$/)

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


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

这是一个简单的重新实现

/^[^-]+([^-]+){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}[^-]*$
第1条:abc pqr, 第2条:aaa bbb, 第3条aaa bbb ccc ddd, 其中字符串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

你认为
[a0-z9]
匹配什么?您的表达式匹配包含2个
|
-
的字符串。此正则表达式似乎包含许多错误。请准确描述您想要匹配的内容,并提供一些应该匹配的示例数据。然后我们可以帮你找一个更好的正则表达式。这就是你想要的吗?字符串1:abc pqr,字符串2:aaa bbb,字符串3:aaa bbb ccc ddd,其中字符串1和2有效,而字符串3无效?hmmmmm。我误解了目的吗?也许我误解了。问题还不清楚。我把这个问题看作是任何一个带有一两个连字符的字符串,但也许他想要的不止这些。