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

JavaScript regular expression to match hyphenated words?

本文关键字:JavaScript 正则表达式 单词 连字符      更新时间:2023-09-26

我想要一个JavaScript正则表达式,它可以在另一个字符串的开头或字符串中的连字符后面匹配字符串。

例如,"milne"、"lee"answers"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。我做错了什么?

您也可以使用:

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

如果它本身不是表达式,请不要忘记转义text中的regex元字符。

JavaScript没有内置的功能,但您可以使用:

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