我想要一个JavaScript正则表达式,它可以在另一个字符串的开头或字符串中的连字符之后匹配字符串。
例如,“milne”和“lee”和“lees”都应该与“Lees-Milne”匹配。
到目前为止,这是我的代码:
var name = "Lees-Milne";
var text = "lee";
// I don't know what 'text' is ahead of time, so
// best to use RegExp constructor.
var re = RegExp("^" + text | "-" + text, "i");
alert(re.exec(name.toLowerCase()));
但是,这将返回null。我做错了什么?
答案 0 :(得分:1)
你也可以使用:
var re = RegExp("(?:^|-)" + text, "i");
如果它不是自己的表达式,请不要忘记在text
中转义正则表达式元字符。
JavaScript没有内置函数,但您可以使用:
function quotemeta(str){
return str.replace(/[.+*?|\\^$(){}\[\]-]/g, '\\$&');
}