2017-11-15 6 views
0

Ich muss ein Wort mit einem französischen Zeichen (dérange) mit einem regulären Ausdruck übereinstimmen. Bisher habe ich dies:Javascript regulären Ausdruck zu französischen Zeichen

var text = "An inconvenient (qui dérange) truth"; 
 
    var splitText = text.trim().match(/\w+|\s+|[^\s\w]+/g); 
 
    
 
    console.log(splitText);

jedoch den é als separate Brief behandelt. Warum?

brauche ich einen regulären Ausdruck in der match() Methode, so dass das Objekt splitText auch das Wort enthält déranger und nicht die drei Worte d, é und range, wie es jetzt der Fall ist.

+0

'\ W 'auf MDN: "Spiele beliebige alphanumerische Zeichen aus dem Grund lateinischen Alphabets, einschließlich der Unterstrich Entspricht [A-Za-z0-9_].." – Amy

+0

Siehe: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Globa l_Objects/RegExp # Regular_expression_and_Unicode_characters – Amy

+1

Machen Sie Ihre eigene Zeichenklasse 'text.trim(). match (/ [a-zàâçéèêëîïôûùüÿæœ] + | \ s + | [^ a-zàçéèêëîïôûùüÿæœ \ s] +/gi);' – revo

Antwort

1

Sie können die split method mit regex versuchen alle Wörter in Ihrem Text zu bekommen, hier ist ein funktionierendes Beispiel:

var text = "An inconvenient (qui dérange) truth"; 
 

 
var splitText = text.trim().split(/\s+/); 
 

 
console.log(splitText);

+0

Thanks YouneL. Ihre Lösung funktioniert, aber ich muss jedes Element behalten, auch die Klammern. – user1627930

+0

Sie sind willkommen, aber wenn Sie Elemente beibehalten möchten, ist es besser und schneller zu verwenden 'var splitText = text.trim(). Split (/ \ s + /);' sehen Sie sich diesen Link an: [match vs Split] (https://jsperf.com/performance-of-match-vs-split) – YouneL

+0

das ist interessant das "Match vs Split". Vielen Dank. – user1627930

0

Es scheint, Sie wollen Whitespaces aus Nicht-Leerzeichen trennen . Allerdings gibt es zwei Ausdrücke für Nicht-Leerzeichen. \w+ (passend [a-zA-Z_0-9]+) und [^\s\w]+ (passend alles andere, außer auch Leerzeichen - so ist dies die é individuell passende Gerade kombinieren diese beiden in [^\s]+ oder - einfacher - \S+:

var text = "An inconvenient (qui dérange) truth"; 
 
var splitText = text.trim().match(/\S+|\s+/g); 
 
console.log(splitText);

+0

Funktioniert gut. Danke Bergi. – user1627930

Verwandte Themen