这个 REGEX 表达式的正确语法是啥?
Posted
技术标签:
【中文标题】这个 REGEX 表达式的正确语法是啥?【英文标题】:What would the correct syntax be for this REGEX expression?这个 REGEX 表达式的正确语法是什么? 【发布时间】:2021-10-05 10:34:23 【问题描述】:我有以下正则表达式代码,即:
/^IT [0-9]1,5/(?<y1>19)?(?(y1)\d2|20\d2)\((?<n1>M)?(?(n1)N|[H|B|C|D|E|G|K|M|U|N|L|S|T|V])\)$/
它旨在检查一组单词并确保其计算结果为:
IT 1/2014(G)
或任何不超过 5 位的值
IT 5000/2014(MN)
然而,在 Firefox 中运行上述程序时,我不断收到以下错误:
Uncaught SyntaxError: invalid regexp group
任何帮助都将不胜感激。
【问题讨论】:
【参考方案1】:该模式包含不受支持的 if 子句。
(?<y1>19)?(?(y1)\d2|20\d2)
如果组 y1
存在,则匹配 19 和 2 位,否则匹配 20 和 2 位。
可以写成(?:19|20)\d2
同样的道理
(?<n1>M)?(?(n1)N|[H|B|C|D|E|G|K|M|U|N|L|S|T|V])
如果组n1
存在,则匹配MN
否则匹配字符类中列出的一个。
可以写成(?:MN|[HB-EGKMUNLSTV])
整个模式可能如下所示:
^IT [0-9]1,5\/(?:19|20)\d2\((?:MN|[HB-EGKMUNLSTV])\)
Regex demo
【讨论】:
以上是关于这个 REGEX 表达式的正确语法是啥?的主要内容,如果未能解决你的问题,请参考以下文章
var regex = /^[\d\,\.]*$/;这个正则是啥含义
\\s正则表达式是啥意思 即String regex="\\.\\s*";是啥意思