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

时间:2013-09-06 11:58:53

标签: javascript regex

我有以下Javascript regexp:

 var regex = '/^' + name + '/'; 
 var s ='';
 s = this.innerHTML.toString().toLowerCase().match(regex);
    if (s != null){
         //do stuff
    }

此正则表达式无法按预期工作,s永远不会被设置(s = null总是) 有任何想法吗?

6 个答案:

答案 0 :(得分:4)

var regex = new RegExp("^" + name);

也许这解决了这个问题。

答案 1 :(得分:2)

由于您的模式是通过字符串连接动态生成的,因此您需要创建一个RegExp对象:

var regex = new RegExp('^' + name + ');

答案 2 :(得分:1)

如果要连接查询字符串,则需要使用RegExp对象。因此,在您的情况下,/是查询的一部分。

 var regex = new RegExp('^' + name);
 var s = '';
 s = this.innerHTML.toString().toLowerCase().match(regex);
 if (s != null) {
   //do stuff
 }

答案 3 :(得分:1)

有两种方法可以创建正则表达式:

1)使用文字形式

var re = /\w+/;

2)使用对象创建表单

var re = new RegExp("\\w+");

通常,您需要文字形式。在您的情况下,您是从字符串创建它,您必须使用对象创建表单。

var re = new RegExp("^" + name);

答案 4 :(得分:0)

只需删除斜杠即可。

pattern = function(name){"^"+name;}

(name + "whatever").match(pattern(name)); // not null
("whatEver..NotName").match(pattern(name)); // null

答案 5 :(得分:0)

我创建了一个jsFiddle,允许您测试各种正则表达式方面。

问题是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");
}