アクセント文字が含まれている場合と含まれていない場合がある正規表現を試してみました。私は過去数日間これを研究してきましたが、問題を解決するために必要な情報を見つけることができません。アクセント文字を含む可能性のある単語を置換するJavascript正規表現
私は偉大なアクセント文字なしで単語を扱う簡単な正規表現を思い付いた:
var re = new RegExp('(?:\\b)hello(?:\\b)', 'gm');
var string = 'hello hello hello world hellos hello';
string.replace(re, "FOO");
結果:私が望むようFOO FOO FOO world hellos FOO
上記作品。上記のコードの問題は、単語にアクセント文字が文字列の最初または最後の文字として含まれている場合です。例:
var re = new RegExp('(?:\\b)helló(?:\\b)', 'gm');
var string = 'helló helló helló world hellós helló';
string.replace(re, "FOO");
結果:helló helló helló world FOOs helló
望ましい結果:アクセント文字を境界として解釈されているため、私の理解からFOO FOO FOO world hellós FOO
は、上記発生しています。問題を解決するために私の試みは(注意:範囲[A-zÀ-ÿ]
は、私は言葉を構築するために有効なアルファベットを考えるものである):
var re = new RegExp('([^A-zÀ-ÿ]|^)helló([^A-zÀ-ÿ]|$)', 'gm');
var string = 'helló helló helló world hellós helló';
string.replace(re, "$1FOO$2");
結果:あなたが見ることができるようFOO helló FOO world hellós FOO
、私はにかなり近いですよ希望の結果。ただし、問題の単語が3回以上連続して表示される場合に問題が発生します。 helló
の2番目のオカレンスは無視されました。私は、その前の空白が既に最初の出現であるhelló
と一致していたからだと思います。
FOO FOO FOO world hellós FOO
の達成方法に関する提案はありますか?
http://stackoverflow.com/questions/5436824/matching-accented-characters-with-javascript-regexesの重複はありますが、確認するまではハマーを使用していません。 – mplungjan
要件が何であるかを正確に説明できますか単語にマッチする?文字列内の任意のインスタンスまたは特定の場所で置き換えられますか。だからその正規表現の代わりに 'helló\ B'なぜですか? – 10100111001