如何在正则表达式匹配中放置变量

How to put variable in regular expression match?

本文关键字:变量 正则表达式      更新时间:2023-09-26

我有以下代码片段。我想找到a的样子,但是不行。我怎样才能把变量放对呢?

var string1 = 'asdgghjajakhakhdsadsafdgawerwweadf';
var string2 = 'a';
string1.match('/' + string2 + '/g').length;

您需要使用RegExp构造函数而不是正则表达式。

var string = 'asdgghjjkhkh';
var string2 = 'a';
var regex = new RegExp( string2, 'g' );
string.match(regex);

如果您不需要全局修饰符,那么您可以只传递string2, .match()将为您创建正则表达式。

string.match( string2 );

如果您只是想检查一个字符串是否包含另一个字符串,那么您最好的选择是简单地使用match()而不使用regex。

你可以反对:但是我需要一个正则表达式来检查类,如's,来定义复杂的模式,等等。

在这种情况下:你将需要改变语法更多,双转义你的类和删除开始/结束/ regex指示符符号。

想象一下这个正则表达式…

someString.match(/'bcool|tubular'b);

当使用新的new RegExp()时,与此完全等价的是…

someStringRegex = new RegExp('''bcool|tubular''b');

在这个转换中发生了两件事:

  • 删除打开和关闭/(否则,您的正则表达式将失败)。
  • 双转义你的字符类,像'b变成''b字边框,'w变成''w空白,等等(否则,你的正则表达式将失败)。

下面是另一个例子//确认字符串是否在其末尾包含target(两者都是下面函数中的变量,例如确认str " abstract "是否在末尾包含target "action")

function confirmEnding(string, target) {
    let regex = new RegExp(target);
    return regex.test(string);
};