2017-06-27 22 views
1

私は任意の言語の単語にマッチするが、絵文字やその他の文字では失敗するjavascript正規表現が必要です。ここの解決策:Regular expression to match non-English characters?はすべての文字と絵文字と絵文字([^\u0000-\u007F]+)に一致します。それを少し変更正規表現のマッチング文字 - 非ラテン(ただし、絵文字は除く)

は私が必要なものを達成するためにそうですが、私はそれがどのように安全ではわからない:([a-zA-Z]|[^\u0000-\u007F\u200d-\u3299\ud83c-\udfff\ufe0e\ufe0f])+

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

文字だけを一致させる必要がありますし、絵文字の前に停止します。例えば、文字の表現と絵文字と一致してはならない:1️⃣#️⃣*️⃣

関連:コンテキストのhttp://www.unicode.org/Public/emoji/5.0/emoji-variation-sequences.txt

ビット: 私はこのパーサパッチを適用しようとしている。現在、それはとして一致するため、絵文字に分割するhttps://github.com/Khan/simple-markdown/blob/master/simple-markdown.js#L1304をできるだけ多くのテキスト。そのパーサーによる絵文字のマッチング/置き換えがなければ、問題があります。強調表示された正規表現から\u00c0-\uffffを削除すると、必要な処理が実行されますが、パーサーは単語の分割を開始します。いくつかの言語(キリル文字)は文字ごとに壊れてしまいますが、これはパフォーマンスには不利です。私はどちらかの正規表現をパッチする必要がありますが、emojisではなく、文字を許可するか、それの前にすべてのテキストをキャッチする正規表現を置きます。

編集:追加言語制限

+0

いくつかの例を追加しました – Max

答えて

0

\pLがUnicode文字に一致します。いくつかの例

編集を追加しました。

あなたは\p{Pc}(コネクタ句読点)のUnicodeカテゴリはまた、文字クラスを使用してit'sまたはdoesn'tのような単語の組み合わせをキャッチすることを結合することがあります:[\pL\p{Pc}]

+0

ありがとう、私はJavaScriptに必要なテキストを追加するのを忘れました。あなたのソリューションはうまくいくだろうが、JSのためではない:( – Max

+0

ああ、どういうわけか私はJavaを読んだと思っていた...その場合は、Steve LevithanのXRegExpライブラリ(Unicodeプラグイン付き)を入手する](http://xregexp.com/plugins /)。 –

関連する問題