我真的很喜欢正则表达式。我想知道这种事情是否可以用 JavaScript 完成。
假设您想要匹配单词 foo 和 bar,但前提是它们后面跟着“?”或者 ”!”。我知道这个简单的情况可以使用 x(?=y)
来完成,但我的目的是知道是否可以将一个正则表达式放在另一个正则表达式中,因为这对于更困难的场景来说非常有用。
我的意思是这样的:
var regex1 = /foo|bar/;
var regex2 = /{regex1}[\?\!]/;
这将简化非常复杂的正则表达式,并使一些模式可重复使用,而不必每次需要时都编写相同的模式。如果有意义的话,它会类似于一个 RegEx 变量。
可能吗?
最佳答案
使用RegExp
构造函数。
new RegExp('(?:' + regex1.source + ')[?!]')
regex1.source
将以字符串形式给出实际的正则表达式,不带分隔符和标志,然后可以将其传递给 RegExp
构造函数以创建新的正则表达式。
另请注意,在字符类内部使用时无需转义 ?
和 !
。
var regex1 = /foo|bar/;
var regex = new RegExp('(?:' + regex1.source + ')[?!]')
console.log(regex);
关于javascript - 从其他正则表达式创建正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38894200/