我有以下 Javascript 正则表达式:
var regex = '/^' + name + '/';
var s ='';
s = this.innerHTML.toString().toLowerCase().match(regex);
if (s != null){
//do stuff
}
这个正则表达式不能按预期工作,s
永远不会设置(s = null
总是)有什么想法吗?
我有以下 Javascript 正则表达式:
var regex = '/^' + name + '/';
var s ='';
s = this.innerHTML.toString().toLowerCase().match(regex);
if (s != null){
//do stuff
}
这个正则表达式不能按预期工作,s
永远不会设置(s = null
总是)有什么想法吗?
var regex = new RegExp("^" + name);
也许这可以解决问题。
由于您的模式是通过字符串连接动态生成的,因此您需要创建一个 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
}
我创建了一个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");
}
创建正则表达式有两种方法:
1) 使用文字形式
var re = /\w+/;
2)使用对象创建表单
var re = new RegExp("\\w+");
通常,您需要文字形式。在您的情况下,您是从字符串创建它,您必须使用对象创建表单。
var re = new RegExp("^" + name);
只需删除斜线即可。
pattern = function(name){"^"+name;}
(name + "whatever").match(pattern(name)); // not null
("whatEver..NotName").match(pattern(name)); // null