我真的很喜欢正则表达式。我想知道这类事情是否可以在JavaScript中完成。
想象一下,您想要匹配foo和bar这两个单词,但只在它们后面跟着"?“或者"!“我知道这个简单的例子可以用x(?=y)来完成,但我在这里的目的是知道您是否可以将一个RegEx放在另一个RegEx中,因为这对于更困难的场景来说是很好的。
我的意思是这样的:
var regex1 = /foo|bar/;
var regex2 = /{regex1}[\?\!]/;这将简化非常复杂的正则表达式,并使某些模式可以重用,而不必每次需要时都编写相同的模式。如果这有意义的话,它将类似于一个RegEx变量。
有可能吗?
发布于 2016-08-11 10:48:20
使用RegExp构造函数。
new RegExp('(?:' + regex1.source + ')[?!]')regex1.source将把实际的正则表达式作为字符串,而不需要分隔符和标志,然后可以将这些分隔符和标志传递给RegExp构造函数来创建新的正则表达式。
另外,请注意,在字符类中使用时,不需要转义?和!。
var regex1 = /foo|bar/;
var regex = new RegExp('(?:' + regex1.source + ')[?!]')
console.log(regex);
https://stackoverflow.com/questions/38894200
复制相似问题