2011-09-10 34 views
8

文字列に空白、文字、およびñ - 大文字小文字の区別がないことを確認するJavascript正規表現を探しています。文字、スペース、およびñを受け入れるJavascriptの正規表現

私は既に試しました:/^[A-Za-z _]*[A-Za-z][A-Za-z _]*$/ですが、それはñを受け入れることができません。

+0

私は試しました:/^[A-Za-z] [A-Za-z] [A-Za-z _] * $/- しかし、これは値を受け入れません。 –

+0

あなたの質問のように聞こえるのは、正規表現で非ASCII文字を扱う方法です。 –

+1

はい、この場合ASCII値が必要なだけなので、 –

答えて

11
/^[ñA-Za-z _]*[ñA-Za-z][ñA-Za-z _]*$/ 

/^[\u00F1A-Za-z _]*[\u00F1A-Za-z][\u00F1A-Za-z _]*$/ 

動作するはずです。

Javascript正規表現は、\u0000から\uFFFFまでをサポートします。

+0

あなたの応答は助けになりました私はたくさん!ありがとう –

+3

最初にNFC変換でデータを実行するように指示していないという根本的な欠陥があります。彼がしなければ、それらのパターンは動作しません。私はスペイン語のアルファベットのために彼が実際に '[aábcdeéfghijklmnñoópqrstuúüvwxyzAÁBCDEÉFGHIJKLMNÑOPQRSTUÚÜVWXYZ]を望んでいると確信していますが、それはデータをNFCにした場合にのみ有効です! – tchrist

4

単にカーカーターが必要な場合は、[A-Za-zÑñ ]のようにRegexに挿入します。それ以外の場合は、http://xregexp.com/のようなJavascript用のUnicode認識Regexライブラリを使用してください。悲しいことに、JS RegexesはUnicode準拠の文字クラス(C#正規表現で\p{L}など)をサポートしていません。

+0

C#は実際には '\ pL'の代わりに' \ p {L} 'と書くのですか? これは、7つの最も一般的なケースの指定子の長さを3倍にするため、実際にはダムです。それはハフマンの失敗です。誰かがそれほどスマートではなかった。 '\ pL'は' \ w'よりも入力するのが少し難しくなります。それ以外の人はそれを使用しません。 '\ p {L}'は設計上のバグです。 – tchrist

+0

@tchristしかし、最終的には "式"の長さの2倍以下です。 "\ pL"は5文字、\ pLは3です。ええ、\ pLは良いでしょうが、BMP以外の文字と\ Xをサポートすることがもっと重要だと思います:-) – xanatos

1

文字クラスを使用する必要があります。

/[A-Za-z ñ]+/ 
関連する問題