2017-10-13 12 views
0

結果に他の文字で囲まれていない単語と一致し、単語のみを含める:/[Hh][Ee][Ll][Ll][Oo](?![A-Za-z0-9\-])(?![^<]*>)/g正規表現:これは私の現在の正規表現です

これはマッチングのための私のテストで:

hello helloa ahello <hello> 
^^^^^  !!!!!! 
Should match ^^^^^ only 

私の現在の正規表現一致するのは!!!!!です。私はこのような正規表現を作った:/(?<![A-Za-z0-9\-])[Hh][Ee][Ll][Ll][Oo](?![A-Za-z0-9\-])(?![^<]*>)/gしかし、lookbehindsはjavascriptではサポートされていないので、私は何をすべきか分からない。

編集:私は、私はそれが、少なくともどちらかの側で空白文字、または文字列の先頭または末尾を持つ必要がhelloの検索ここではそうthis is what I'm working on.

+0

、あなたは説明する気にしていますか? – zevee

+0

あなたのコードからは、複合語の一部ではない「hello」という単語全体をマッチさせたいと思い、 '<...>'部分文字列の外に置き換えるだけでした。関数($ 0、$ 1、$ 2、$ 3){return $ 1?$ 0:$ 0、$ 1、$ 2、$ 3を返します。 ($ 2?$ 0: "!!!" + $ 3 + "!!!");}) '](https://jsfiddle.net/ma9seau9/1/)。 –

答えて

1

、プロジェクトを掲示することに役立つと思います。

私の例では、余分な2つのhelloを追加しました。開始行の末尾には&の末尾もテストされています。それは少し混乱だWiktorStribiż[email protected]

var re = /(^|\s)(hello)(\s|$)/g; 
 

 
var str = 'hello helloa ahello hello <hello> hello'; 
 

 
console.log(str.replace(re, "$1!!$2!!$3"));

+0

それは素晴らしいですが、私はスペース文字に一致することはできません – zevee

+1

@zevee複数のキャプチャグループを更新し、それを表示するために私は '!! 'の中にhelloを置き換えるために使用しました – Keith

+0

私はそれを私のコード(上にリンク)とそれは何も強調表示していないようだ... – zevee