Javascript正则表达式匹配不起作用
我有以下Javascript regexp:Javascript正则表达式匹配不起作用,javascript,regex,Javascript,Regex,我有以下Javascript regexp: var regex = '/^' + name + '/'; var s =''; s = this.innerHTML.toString().toLowerCase().match(regex); if (s != null){ //do stuff } 此正则表达式未按预期工作,s从未设置(s=null始终) 有什么想法吗 只要删除斜杠就行了 pattern = function(name){"^"+n
var regex = '/^' + name + '/';
var s ='';
s = this.innerHTML.toString().toLowerCase().match(regex);
if (s != null){
//do stuff
}
此正则表达式未按预期工作,s
从未设置(s=null
始终)
有什么想法吗 只要删除斜杠就行了
pattern = function(name){"^"+name;}
(name + "whatever").match(pattern(name)); // not null
("whatEver..NotName").match(pattern(name)); // null
这可能解决了问题。由于模式是通过字符串连接动态生成的,因此需要创建一个RegExp对象:
var regex = new RegExp('^' + name + ');
要连接查询字符串时,需要使用RegExp对象。因此,在您的例子中,
/
是查询的一部分
var regex = new RegExp('^' + name);
var s = '';
s = this.innerHTML.toString().toLowerCase().match(regex);
if (s != null) {
//do stuff
}
我创建了一个用于测试各种正则表达式方面的
问题在于var regex
的格式不正确。卸下/
es:
// Test code
var name = "foobar";
//var test = "foobar at the start of a sentence";
var test = "a sentence where foobar isn't at the start";
//var regex = '/^' + name + '/'; // Wrong format
var regex = '^' + name; // correct format
var s = '';
//s = this.innerHTML.toString().toLowerCase().match(regex);
s = test.toString().toLowerCase().match(regex);
if (s != null) {
//do stuff
alert("works");
}
有两种方法可以创建正则表达式: 1) 使用文字形式
var re = /\w+/;
2) 使用对象创建表单
var re = new RegExp("\\w+");
通常,您需要文本形式。如果您是从字符串创建对象,则必须使用对象创建窗体
var re = new RegExp("^" + name);
这里所指的
是什么?。。。这个答案说的两件事是错误的。。。match函数还接受一个字符串,并且不会动态计算模式,即使使用RegExpGood来了解match函数也是如此。所谓动态,我的意思是模式需要字符串连接,而不是硬编码的值。每次更新name
时都需要重新创建regex对象
var re = new RegExp("^" + name);