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

标签 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] 请帮忙

最佳答案

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

如果确实需要逗号,则 [21] 不会计算,但 [21,] 会计算。

如果逗号应该是可选的,则表达式的一部分应该是 [,]? ,这会导致零次或一次重复,或者可能是 [,]*这是任意次数的重复。

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

增强 - 正如评论中所述,您将单个字符括在方括号中,表示一类字符。当您的字符类只有一个字符时,这是不必要的,并且会使像正则表达式这样难以阅读的语法变得更加困难。您的表达式可以缩短为 ^(\[)(\d{1,2}(-\d{1,2})?,?)*(\])$

关于JavaScript 正则表达式(exp)?问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30755985/

相关文章:

javascript - 从排序数组中删除重复项 - 使用 Set (ES6)

javascript - 尝试使用 Ajax 实现类似功能后出现内部服务器错误 500

regex - 匹配某个单词前后最多 5 个单词

javascript - 电话号码正则表达式验证[区号和电话号码]

javascript - 我的正则表达式做错了什么?

asp.net - .SVC 文件生成的 Javascript 代理 URL 在 SSL 下不起作用

javascript - 在 Javascript 中启用 Razor 按钮

javascript - HTML 表单提交给出 400 错误请求

regex - Powershell正则表达式

python - 如何使用正则表达式分割字符串而不保留捕获组?