我有
var string1 = 'asdgghjajakhakhdsadsafdgawerwweadf';
var string2 = 'a';
string1.match("\/"+string2+"\/g").length;
所以有了这个我想找到 a 的外观,但它不起作用,我怎么能把变量怀特?
答案 0 :(得分:49)
您需要使用RegExp
构造函数而不是正则表达式文字。
var string = 'asdgghjjkhkh';
var string2 = 'a';
var regex = new RegExp( string2, 'g' );
string.match(regex);
如果您不需要全局修饰符,则只需传递string2
,.match()
即可为您创建正则表达式。
string.match( string2 );
答案 1 :(得分:1)
如果您只是想检查一个字符串是否包含另一个字符串,那么最好的选择就是简单地使用match()
而不使用正则表达式。
您可能会反对: 但是我需要一个正则表达式来检查诸如\s
之类的类,以定义复杂的模式等。
在这种情况下: 您将需要进一步更改语法,对类进行两次转义,并删除开始/结束的/
正则表达式指示符。 < / p>
想象一下这个正则表达式...
someString.match(/\bcool|tubular\b);
当使用新的new RegExp()
时,其确切含义是...
someStringRegex = new RegExp('\\bcool|tubular\\b');
在此过渡中发生了两件事:
/
的开头和结尾(否则,您的正则表达式将失败)。\b
变成\\b
表示单词边界,\w
变成\\w
表示空格,等等(否则,您的正则表达式将失败) 。答案 2 :(得分:0)
这是另一个例子- //确认字符串的末尾是否包含目标(这都是下面函数中的变量,例如,确认str“ Abstraction”的末尾是否包含目标“ action”)。
function confirmEnding(string, target) {
let regex = new RegExp(target);
return regex.test(string);
};