JavaScript正则表达式是否匹配连字号?

JavaScript正则表达式是否匹配连字号?,javascript,regex,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("

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

您也可以使用:

var re = RegExp("(?:^|-)" + text, "i");
如果它本身不是表达式,请不要忘记转义
文本中的正则表达式元字符

JavaScript没有用于此目的的内置函数,但您可以使用:

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

你的意思是引用这个条,像这样:
var re=RegExp(“^”+text+“|-”+text,“i”)?不-谢谢你指出这一点!似乎解决了这个问题,尽管我仍然希望得到任何关于整体正则表达式是否合理的反馈。我认为假设修正看起来不错。我想不出比这更简单的方法了。