Javascript正则表达式(exp)?问题

时间:2015-06-10 12:10:55

标签: javascript regex

我编写了一个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] 请帮忙

1 个答案:

答案 0 :(得分:3)

您的正则表达式包含部分[,],该部分翻译为“必须包含该位置的逗号”。

如果确实需要逗号,则[21]将无法评估,[21,]将会评估。

如果逗号应该是可选的,那么表达式的一部分应该是[,]?,这可以是零或一次重复,或者[,]*可以是任意数量的重复。

最终工作表达式为^(\[)(\d{1,2}([-]\d{1,2})?[,]?)*(\])$,传递所有预期输入。

增强功能 - 如评论中所述,您在方括号中包装单个字符,表示一组字符。当你的角色类只有一个字符时,这不是必需的,并且使得像regexp这样难以阅读的语法更难。您的表达式可以缩短为^(\[)(\d{1,2}(-\d{1,2})?,?)*(\])$