我真的很喜欢正则表达式。我想知道这种事情是否可以用JavaScript完成。
假设您要匹配foo和bar单词,但仅当它们后面跟有“?”时才匹配要么 ”!”。我知道可以使用x(?=y)
来完成这种简单的情况,但是我的目的是要知道是否可以将一个RegEx放置在另一个内部,因为这对于更困难的情况非常有用。
我的意思是这样的:
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);