首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Firefox提供SyntaxError:无效的regexp组

Firefox提供SyntaxError:无效的regexp组
EN

Stack Overflow用户
提问于 2019-04-20 13:38:28
回答 2查看 9.4K关注 0票数 8

我几乎没有用于表单验证的正则表达式,而且我注意到我的项目无法通过firefox访问,因为它没有显示任何内容!但是给出控制台中的错误,SyntaxError: invalid regexp group

nicRegex正在检查我国的国民身份证。格式应为937962723V937962723X或根据当前格式的任何11位数字。

phoneRegex是用我的国家代码检查电话号码。941212121210762323232

const nicRegex = /^(?:19|20)?\d{2}(?:[01235678]\d\d(?<!(?:000|500|36[7-9]|3[7-9]\d|86[7-9]|8[7-9]\d)))\d{4}(?:[vVxX])$/;

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-04-20 21:11:47

负查找(在Safari中目前不支持)用于限制前三位数。这个限制可以在负向前看的情况下同样很好地执行,只需要将其放在3位模式之前:

代码语言:javascript
运行
复制
(?:[0-35-8]\d\d(?<!(?:000|500|36[7-9]|3[7-9]\d|86[7-9]|8[7-9]\d)))

应该看起来像

代码语言:javascript
运行
复制
(?!000|500|36[7-9]|3[7-9]\d|86[7-9]|8[7-9]\d)[0-35-8]\d\d

注意,非捕获组在这里是多余的,我删除了它们,并且[01235678] = [0-35-8]

最后的正则表达式看起来像

代码语言:javascript
运行
复制
/^(?:19|20)?\d{2}(?!000|500|36[7-9]|3[7-9]\d|86[7-9]|8[7-9]\d)[0-35-8]\d\d\d{4}[vVxX]$/

regex演示Regulex图

票数 5
EN

Stack Overflow用户

发布于 2019-10-03 14:26:18

谨慎使用命名捕获组(或不使用它们)

对我来说,这是因为我认为我会很聪明,并试图使用命名捕获组在我的regex.火狐惩罚了我。

不工作: /(?<text>[a-z]+)/

确实有效: /([a-z]+)/

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55774080

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档