我编写了一个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] 请帮忙
答案 0 :(得分:3)
您的正则表达式包含部分[,]
,该部分翻译为“必须包含该位置的逗号”。
如果确实需要逗号,则[21]
将无法评估,[21,]
将会评估。
如果逗号应该是可选的,那么表达式的一部分应该是[,]?
,这可以是零或一次重复,或者[,]*
可以是任意数量的重复。
最终工作表达式为^(\[)(\d{1,2}([-]\d{1,2})?[,]?)*(\])$
,传递所有预期输入。
增强功能 - 如评论中所述,您在方括号中包装单个字符,表示一组字符。当你的角色类只有一个字符时,这不是必需的,并且使得像regexp这样难以阅读的语法更难。您的表达式可以缩短为^(\[)(\d{1,2}(-\d{1,2})?,?)*(\])$