一尘不染

如何在JavaScript中连接正则表达式文字?

javascript

可以做这样的事情吗?

var pattern = /some regex segment/ + /* comment here */
    /another segment/;

还是我必须使用新的RegExp()语法并连接一个字符串?我更喜欢使用文字,因为代码既不言而喻又简洁。


阅读 277

收藏
2020-05-01

共1个答案

一尘不染

这是如何在不使用正则表达式文字语法的情况下创建正则表达式的方法。这使您可以在字符串变成正则表达式对象之前进行任意的字符串操作:

var segment_part = "some bit of the regexp";
var pattern = new RegExp("some regex segment" + /*comment here */
              segment_part + /* that was defined just now */
              "another segment");

如果您有两个正则表达式文字,则实际上可以使用此技术将它们连接起来:

var regex1 = /foo/g;
var regex2 = /bar/y;
var flags = (regex1.flags + regex2.flags).split("").sort().join("").replace(/(.)(?=.*\1)/g, "");
var regex3 = new RegExp(expression_one.source + expression_two.source, flags);
// regex3 is now /foobar/gy

它不仅仅是将表达式一和两个作为文字字符串而不是文字正则表达式,还比较罗word。

2020-05-01