我写了一个Javascript正则表达式如下
/^(\[)(\d{1,2}([-]\d{1,2})?[,])*(\])$/
我试图根据输入文本 [21] 进行验证,但失败了。我正在使用 http://www.regexplanet.com/advanced/javascript/index.html 进行验证
我怀疑 ([-]\d{1,2}) 有问题?
应传递的输入为 [12-23] 或 [34] 或 [12-23,34] 请帮忙
最佳答案
您的正则表达式包含 [,]
部分,其翻译为“该位置必须包含逗号”。
如果确实需要逗号,则 [21]
不会计算,但 [21,]
会计算。
如果逗号应该是可选的,则表达式的一部分应该是 [,]?
,这会导致零次或一次重复,或者可能是 [,]*
这是任意次数的重复。
最终工作表达式为^(\[)(\d{1,2}([-]\d{1,2})?[,]?)*(\])$
它传递您所有预期的输入。
增强 - 正如评论中所述,您将单个字符括在方括号中,表示一类字符。当您的字符类只有一个字符时,这是不必要的,并且会使像正则表达式这样难以阅读的语法变得更加困难。您的表达式可以缩短为 ^(\[)(\d{1,2}(-\d{1,2})?,?)*(\])$
关于JavaScript 正则表达式(exp)?问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30755985/