2016-04-28 16 views
0

Ich möchte Wort mit Nicht-Leerzeichen fangen.Javascript Regex Lookbehind Alternative

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); 

Diese Drucke: [ "kişiler "], aber ich möchte dieses Ergebnis: [" kişiler"] Ich muss Positive Lookbehind verwenden, aber es ist nicht in JavaScript unterstützt. Gibt es eine alternative Lösung?

+1

warum verwenden positive Lookbehind ?? warum nicht Wortgrenze verwenden '\ bword \ b '.. und wo verwenden Sie sogar Lookbehind in Regex? – rock321987

+0

Ihre Frage ist überhaupt nicht klar..rephrase es – rock321987

+0

@ rock321987 Ich habe diese Zeichen: "şöüğçıİ" so Wortgrenze nicht fangen, wenn das Wort diese Zeichen hat. – ozen

Antwort

1

Da Sie keine Wortgrenzen mit Unicode-Zeichen verwenden können, lassen Sie uns die Räume passen, aber Gruppe das Wort, um es abzurufen:

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

Nach einem Spiel, Gruppe 1 sollte das erwartete Wort sein.

Zum Beispiel:

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

danke aber ergebnis: ["kişiler"] warum fangen mit dem raum? – ozen

+0

Weil, wie Sie sagten, es kein Lookbehind gibt, so müssen Sie alles, was Sie überprüfen möchten, fangen und dann nur den interessanten Teil dank der Gruppierung abrufen. 'paragraphy.match (regex) [1]' in meinem Beispiel ruft Gruppe 1 der Übereinstimmung ab, die Ihrem angegebenen Wort entspricht. – Aaron

+0

Mein Englisch ist nicht gut genug, deshalb fällt es dir schwer, mich auszudrücken und zu verstehen. Trotzdem ist deine Lösung Arbeit. Vielen Dank. – ozen

1

JS Demo

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]);