【发布时间】:2011-10-26 13:54:48
【问题描述】:
我有以下sn-p。想找a的样子,但是不行。如何正确放置变量?
var string1 = 'asdgghjajakhakhdsadsafdgawerwweadf';
var string2 = 'a';
string1.match('/' + string2 + '/g').length;
【问题讨论】:
标签: javascript regex
我有以下sn-p。想找a的样子,但是不行。如何正确放置变量?
var string1 = 'asdgghjajakhakhdsadsafdgawerwweadf';
var string2 = 'a';
string1.match('/' + string2 + '/g').length;
【问题讨论】:
标签: javascript regex
您需要使用 RegExp 构造函数而不是正则表达式文字。
var string = 'asdgghjjkhkh';
var string2 = 'a';
var regex = new RegExp( string2, 'g' );
string.match(regex);
如果您不需要全局修饰符,那么您只需传递string2,.match() 将为您创建正则表达式。
string.match( string2 );
【讨论】:
var str = "abca1cba3a"; var search = "a"; var re = new RegExp (search + '\\d', 'g'); str.match(re); // result: ['a1', 'a3']
如果您只是想检查一个字符串是否包含另一个字符串,那么最好的办法就是使用不带正则表达式的match()。
您可能会反对:但我需要一个正则表达式来检查类,例如 \s,以定义复杂的模式等。
在这种情况下:您将需要进一步更改语法,双重转义您的类并删除开始/结束 / 正则表达式指示符号。
想象一下这个正则表达式...
someString.match(/\bcool|tubular\b);
当使用新的new RegExp() 时,与此完全等价的是...
someStringRegex = new RegExp('\\bcool|tubular\\b');
在这个过渡过程中发生了两件事:
/ 的开头和结尾(否则,您的正则表达式将失败)。\b 变为 \\b 用于单词边框,\w 变为 \\w 用于空格等(否则,您的正则表达式将失败)。【讨论】:
这是另一个例子- //确认字符串末尾是否包含target(都是下面函数中的变量,例如确认str“Abstraction”末尾是否包含target“action”)。
function confirmEnding(string, target) {
let regex = new RegExp(target);
return regex.test(string);
};
【讨论】: