19

最近、文字 (特殊文字とスペースを含む) のみを許可する PHP コード用の正規表現を作成しましたが、JavaScript 互換の正規表現 (?) に変換する際に問題が発生しました/^[\s\p{L}]+$/u。問題は/u、正規表現パターンの末尾にある修飾子です。JavaScript ではそのようなフラグが許可されていないためです。

これを書き直して、JavaScript でも機能するようにするにはどうすればよいですか?

ポーランド語の文字のみを許可するものはありますか: Ł, Ą, Ś, Ć, ...

4

3 に答える 3

20

/u修飾子はUnicodeサポート用です。ES2015 でJavaScriptにサポートが追加されました。

JavaScript を使用した正規表現でのユニコードの詳細については、http://stackoverflow.com/questions/280712/javascript-unicodeを参照してください。


ポーランド語の文字:

Ą \u0104
Ć \u0106
Ę \u0118
Ł \u0141
Ń \u0143
Ó \u00D3
Ś \u015A
Ź \u0179
Ż \u017B
ą \u0105
ć \u0107
ę \u0119
ł \u0142
ń \u0144
ó \u00F3
ś \u015B
ź \u017A
ż \u017C

すべての特殊ポーランド文字:

[\u0104\u0106\u0118\u0141\u0143\u00D3\u015A\u0179\u017B\u0105\u0107\u0119\u0142\u0144\u00F3\u015B\u017A\u017C]
于 2012-10-15T13:59:07.807 に答える
5

JavaScript には UTF-8 文字列の概念がないため、/uフラグが必要になる可能性はほとんどありません。(あなたの文字列は、おそらくすでに通常の JavaScript 形式であり、「文字」ごとに 1 つの UTF-16 コード単位です。)

\p{L}より大きな問題は、JavaScript がも同等の表記法もサポートしていないことです。JavaScript の正規表現は、Unicode 文字のプロパティを認識しません。それを概算するいくつかの方法については、この StackOverflow の質問への回答を参照してください。


追加するために編集:ポーランド語の文字のみをサポートする必要がある場合は、/^[\sa-zA-ZĄĆĘŁŃÓŚŹŻąćęłńóśźż]+$/. a-zとのA-Z部分で ASCII 文字がカバーされ、残りの文字が個別にリストされます。

于 2012-10-15T13:54:45.033 に答える