有可能做这样的事情吗?
var pattern = /some regex segment/ + /* comment here */ /another segment/;
还是我必须使用新RegExp()语法并连接字符串?我更喜欢使用文字,因为代码既不言而喻又简洁。
RegExp()
以下是如何在不使用正则表达式文字语法的情况下创建正则表达式。这使您可以在字符串变为正则表达式对象之前进行任意字符串操作:
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
它比仅仅让表达式 1 和 2 成为文字字符串而不是文字正则表达式更冗长。