javascript - 为什么以下字符串中大于 17 的值是匹配的?

标签 javascript regex

为什么大于 17 的值在以下字符串中匹配?

    "1,2,17,18,19,181111".match(/^\b((1[0-7]|[1-9])\,?)+$/g )

最佳答案

您的正则表达式非常接近,但问题是逗号是可选匹配,它可以让正则表达式匹配先前匹配的数字。单词边界或 \b 应该是该组的一部分,以确保您只匹配完整的数字:

^(?:\b(?:1[0-7]|[1-9])\,?)+$

RegEx Demo

请注意,旧式的展开正则表达式,因为这个正则表达式仍然会表现得更好:

^(?:1[0-7]|[1-9])(?:,(?:1[0-7]|[1-9]))*$

关于javascript - 为什么以下字符串中大于 17 的值是匹配的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48425177/

相关文章:

javascript - ng-repeat 嵌套嵌套对象

javascript - 在上传到 FTP 之前预处理文件

javascript - 如何将数组中的多组重复整数分组到自己的数组数组中?

regex - phpstorm正则表达式搜索和替换

Javascript删除已知值的键和值数组

javascript - AngularJS 多个 ngApps,每个都有自己的 ngRoute 定义,在一页上延迟加载和引导

regex - Perl正则表达式匹配来自/etc/hosts的ip和host

php - 正则表达式 8 个字符

javascript 简单的正则表达式

正则表达式抓取两个特定字符串之间的文本