2017-06-27 1 views
1

J'ai besoin d'une regex javascript qui corresponde aux mots dans n'importe quelle langue, mais qui échoue pour emoji ou tout autre caractère. Solution ici: Regular expression to match non-English characters? correspond à toutes les lettres plus des pictogrammes et des emoji ([^\u0000-\u007F]+).Lettres assorties Regex - y compris non-latin, mais sans les emoji

Modifier un peu semble accomplir ce que j'ai besoin, mais je ne suis pas sûr de savoir comment il est sûr: ([a-zA-Z]|[^\u0000-\u007F\u200d-\u3299\ud83c-\udfff\ufe0e\ufe0f])+

Exemple: America Österreich Россия Ελλάδα

Ne doit correspondre à lettres et arrêtez avant emoji. Ne devrait pas correspondre emojis avec des représentations de lettres, par exemple: 1️⃣#️⃣*️⃣

pertinente: http://www.unicode.org/Public/emoji/5.0/emoji-variation-sequences.txt

Bit contexte: Je suis en train de patcher cet analyseur: https://github.com/Khan/simple-markdown/blob/master/simple-markdown.js#L1304 pour briser le emojis, car actuellement il correspond en beaucoup de texte comme il peut. Sans cela émoji correspondant/remplacement via cet analyseur est problématique. En supprimant \u00c0-\uffff de l'expression regex en surbrillance, j'accomplis ce dont j'ai besoin, mais l'analyseur commence à casser les mots. Certaines langues (cyrrillic) se cassent par lettre, ce qui n'est pas bon pour la performance. J'ai besoin soit de patcher cette regex pour permettre les lettres, mais pas emojis, ou de mettre une regex qui attrape tout le texte avant.

Edit: Ajout de quelques exemples

Edit: restriction linguistique Ajouté

+0

Yep a ajouté quelques exemples – Max

Répondre

0

\pL correspond à une lettre Unicode.

Vous pouvez combiner cette catégorie Unicode avec \p{Pc} (connecteur de ponctuation) pour attraper aussi des combinaisons de mots comme it's ou doesn't en utilisant une classe de caractères: [\pL\p{Pc}]

+0

Merci, j'ai oublié d'ajouter dans le texte que j'en ai besoin en javascript. Votre solution serait bien, mais pas pour JS :( – Max

+0

Ah, désolé, je pensais en quelque sorte que j'avais lu Java ... dans ce cas, prenez la bibliothèque XRegExp de Steve Levithan (avec les plugins Unicode)] (http://xregexp.com/plugins /). –