javascript - 从其他正则表达式创建正则表达式

标签 javascript regex

我真的很喜欢正则表达式。我想知道这种事情是否可以用 JavaScript 完成。

假设您想要匹配单词 foobar,但前提是它们后面跟着“?”或者 ”!”。我知道这个简单的情况可以使用 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/

相关文章:

javascript - 返回 false 不起作用

javascript - 将变量传递给回调函数

python - 简单的正则表达式分割

regex - Emacs 正则表达式计数出现

php - 如何使用正则表达式仅解析第一级嵌套标签?

r - 如何在 r 中使用正则表达式删除单词前的所有措辞?

javascript - 使用覆盖显示进度条的问题

javascript - Google Analytics 电子商务实现

javascript - 图像加载仅加载最后一张图像

php preg_match 可选子模式