当正则表达式有效且在其他地方工作时,带有“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 正则表达式错误、“无效的正则表达式组”的主要内容,如果未能解决你的问题,请参考以下文章