2012-07-28 13 views
5

Node.jsで基本的なStringテストを行いたいユーザーが自分の名前を入力するフォームがあり、それがちょうどゴミまたは本名かどうかを確認したいとします。拡張ラテンアルファベット(äöüèß)を使ったRegEx

幸いにも(または悲しいことに私の小切手のために)私は世界中のユーザーに、ä ö ü ß éのような英語以外の文字が含まれていることを意味します。私は/[A-Za-z -]{2,}/を使用していましたが、これは"Jan Buschtöns"のような名前と一致しません。

英語以外の可能性のあるすべてのラテン文字をRegExに手動で追加する必要がありますか? /[A-Za-z -äöüÄÖÜßéÉèÈêÊ...]{2,}/のようなRegExの100文字以上は望んでいません。

+0

'/ \ w + /'のようなトリックは機能しません。彼らは英語の文字にもマッチします。 – buschtoens

+2

Salishの名前を持つ人物を取得したらどうなりますか? [Salishの言語](http://en.wikipedia.org/wiki/Salishan_languages)は、 "Sḵwxwú7mesh"のように文字として「7」を使用します。韓国語、日本語、中国語はどうですか... [Falsehoods Programmers About Names]を読んでみてください。http://www.kalzumeus.com/2010/06/17/falsehoods-programmers-信じられないほどの名前/)。私は基本的にあなたがあなたの点検で全く気にしないことを提案しています。 –

+0

私はすでにアジア系とキリル系の言語について考えました。彼らは使用できるラテンの同等物を持っています。そして... Salishは非常にまれなケースです。 :D – buschtoens

答えて

4

チェックhttp://www.regular-expressions.info/unicode.html

http://xregexp.com/plugins/あなたはユニコードを含めたい場合は任意の文字の文字に一致するように\p{L}を使用する必要があります。

ユニコードと言えば、\wの代わりに[\p{L}\p{N}_]です。

+0

js –

+0

@MrAndersonではブラウザプラグインではなく、JavaScriptのlibでこれを行うには['plugin'](http://xregexp.com/plugins/)が必要だと思います。 silvinciはNode.jsを使用しています.XRegExpをモジュールとしてインポートするのは非常に簡単です。 – slevithan

+0

"POSIX文字クラス"を検索します。 JavaScriptの正規表現はそれらをサポートしており、一般的に(少なくとも最も一般的に使用されている人間の言語では)「これは文字ですか?」や「これは大文字ですか?」などの質問に非常に簡単に答えることができます。 – ebohlman

関連する問題