Javascript正则表达式匹配不起作用

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

我有以下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){"^"+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);