web-dev-qa-db-ja.com

JavaScriptの正規表現修飾子/ u?

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

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

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

16
Scott

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

JavaScriptを使用した正規表現のUnicodeの詳細については、 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]
16
Ωmega

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

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


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

3
ruakh
1
Futago-za Ryuu