2016-04-28 2 views
0

空白で単語をキャッチしたい。Javascript Regex Lookbehindオルタナティブ

var paragraphy="Apple banana kişiler ki örnek foo."; 
var word="kişiler"; 
var regex = new RegExp("(?:[\\s>]|^)("+word+")(?=[.,;?!]?(?:[<\\s])|$)", "gi"); 
console.log(paragraphy.match); 

この版画:[「kişiler 『]が、私はこの結果をしたい:[』kişiler」] 私はポジティブな後方参照を使用する必要がありますが、それはJavaScriptでサポートされていません。代わりの解決法はありますか?あなたがUnicode文字と単語の境界を使用することはできませんので

+1

なぜ肯定後読み??なぜない単語の境界を使用し、 '\ bword \ B'を使用..? 正規表現でlookbehindを使っていますか? – rock321987

+0

あなたの質問は全くわかりません。言い換えれば、それは – rock321987

+0

@ rock321987です。私はこの文字を持っています: "şöüğçıİ"です。 – ozen

答えて

1

、のは、それを取得するためのスペースが、グループの単語と一致してみましょう:試合後

(?:^|\s)(<your word>)(?:\s|$) 

は、グループ1が予想される単語でなければなりません。例えば

var regex = /(?:^|\s)(kişiler)(?:\s|$)/ 
var paragraphy="Apple banana kişiler ki örnek foo." 
paragraphy.match(regex)[1] 
> "kişiler" 
+0

ありがとう、結果:["kişiler"]なぜスペースをつかまえますか? – ozen

+0

あなたが言ったように、lookbehindがないので、あなたがチェックしたいすべてをキャッチし、グループ分けのおかげで興味深い部分だけを取得する必要があるからです。私の例で 'paragraphy.match(regex)[1]'は指定された単語に対応するマッチのグループ1を検索しています。 – Aaron

+0

私の英語は十分ではありません。だからあなたは自分自身を表現し理解することが難しいと思っています。それでもあなたの解決策はうまくいくよ。 – ozen

1

JSデモ

var paragraphy="Apple ba kişiler nana ki örnek foo."; 
 
var word="kişiler"; 
 
var regex = new RegExp("(?:^|\\s)("+word+")(?=\\s|$)", "gi"); 
 
var m = regex.exec(paragraphy); 
 
document.writeln(m[1]);