JavaScript正则表达式匹配带连字符的单词?

时间:2012-02-29 11:42:26

标签: javascript regex

我想要一个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。我做错了什么?

1 个答案:

答案 0 :(得分:1)

你也可以使用:

var re = RegExp("(?:^|-)" + text, "i");

如果它不是自己的表达式,请不要忘记在text中转义正则表达式元字符。

JavaScript没有内置函数,但您可以使用:

function quotemeta(str){
    return str.replace(/[.+*?|\\^$(){}\[\]-]/g, '\\$&');
}