我很少使用正则表达式进行表单验证,并且我注意到我的项目无法通过firefox访问,因为它什么也没显示!但在控制台中输入错误SyntaxError: invalid regexp group
nicRegex正在检查我所在国家的国民身份证。格式应为937962723V
或937962723X
或根据当前格式的任何11位数字。
phoneRegex将使用我的国家代码检查电话号码。 94121212121
或0762323232
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])$/;
答案 0 :(得分:3)
对我来说,这是因为我认为我会很聪明,并尝试在正则表达式中使用命名捕获组... Firefox惩罚了我。
不起作用: /(?<text>[a-z]+)/
可以工作: /([a-z]+)/
答案 1 :(得分:0)
负向后搜索(Firefox当前不支持)用于限制前三位数字。可以使用负前瞻同样很好地执行此限制,只是需要将其放置在3位数字模式之前
(?:[0-35-8]\d\d(?<!(?:000|500|36[7-9]|3[7-9]\d|86[7-9]|8[7-9]\d)))
应该像
(?!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]
。
最终的正则表达式看起来像
/^(?: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]$/