我有以下Javascript regexp:
var regex = '/^' + name + '/';
var s ='';
s = this.innerHTML.toString().toLowerCase().match(regex);
if (s != null){
//do stuff
}
此正则表达式无法按预期工作,s
永远不会被设置(s = null
总是)
有任何想法吗?
答案 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");
}