当正则表达式有效且在其他地方工作时,带有“m”标志的 Javascript 正则表达式错误、“无效的正则表达式组”

Posted

技术标签:

【中文标题】当正则表达式有效且在其他地方工作时,带有“m”标志的 Javascript 正则表达式错误、“无效的正则表达式组”【英文标题】:Javascript regex error with 'm' flag, 'invalid regexp group' when regex is valid and working elsewhere 【发布时间】:2014-10-22 11:50:35 【问题描述】:

这行正则表达式在 javascipt 中中断,但是当使用正则表达式测试器时,它可以正常工作:

var pattern = new RegExp(/^(?m)^([A-Z0-9]2,4)(?:\s*[A-Z0-9]3)?$/);
"SL44BZ".match(pattern);

如何使用 javascript 的 .match() 进行这项工作?

它应该返回在“SL4”处拆分的两个结果的数组。

看起来这个问题与多行“(?m)”标志有关,但是如果我删除这个错误的结果会返回。

【问题讨论】:

?s/?m 不支持,只能在re外指定匹配模式。 还有,new RegExp在这里是多余的,pattern = /..../m 【参考方案1】:

var pattern = /^([A-Z0-9]2,4)(?:\s*[A-Z0-9]3)?$/m; "SL44BZ".match(pattern);

应该这样做,如果你还没有从 cmets 中弄清楚的话。

【讨论】:

以上是关于当正则表达式有效且在其他地方工作时,带有“m”标志的 Javascript 正则表达式错误、“无效的正则表达式组”的主要内容,如果未能解决你的问题,请参考以下文章

仅当字符串包含指定的内容但没有其他内容时,正则表达式匹配

sed 和 Perl 正则表达式替换一次,带有多个替换标志

正则表达式修饰符 - 可选标志

当正则表达式包含 \w 时,带有 label_replace 的 promql 正则表达式返回空白值

在有效字符后输入无效字符时,正则表达式无法工作?

JS正则[egExp]小记