2012-02-29 18 views
0

私は別の文字列の開始時に、または文字列にハイフンの後のいずれかの文字列を一致させることができますJavaScriptの正規表現をしたいと思います。JavaScriptの正規表現はハイフン付きの単語を一致させるには?

例えば、「ミルン」と「リー」と「澱」必要があるすべての一致「リーズ・ミルン」。

これは、これまでの私のコードです:

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

あなたは、このように、バーを引用するもしかして: 'varが再=正規表現( "^" +テキスト+「| - "+ text、" i ");'? – andrewmu

+0

いいえ - それを指摘してくれてありがとう!問題を解決しているようだが、正規表現全体が賢明に見えるかどうかについてのフィードバックが残っている。 – Richard

+0

は、私はそれが正常に見えるその補正を想定して考えます。私はそれを行うより簡単な方法を考えることができません。 – andrewmu

答えて

1

ます。また、使用することができます

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

は、それが表現それ自身ではない場合textで正規表現のメタ文字をエスケープすることを忘れないでください。

JavaScriptがいないことのための機能が組み込まれていますが、あなたが使用することができます

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