2012-07-28 6 views
5

Я хочу выполнить базовое тестирование String в Node.js. Предположим, у меня есть форма, в которой пользователи вводят свое имя, и я хочу проверить, что это просто мусор или настоящее имя.RegEx с расширенным латинским алфавитом (ä ö ü è ß)

С удовольствием (или, к сожалению, для моего чека) Я получаю пользователей со всего мира, что означает, что их имена содержат неанглийские символы, например ä ö ü ß é. Я использовал для использования /[A-Za-z -]{2,}/, но это не совпадает с такими именами, как "Jan Buschtöns".

Должен ли я вручную добавлять к моему RegEx все возможные неанглийские, но латинские символы? Я не хочу, чтобы более 100 символов длились RegEx, например, /[A-Za-z -äöüÄÖÜßéÉèÈêÊ...]{2,}/.

+0

Трюки типа '/ \ w + /' не работают. Они соответствуют только английским символам. – buschtoens

+2

И что произойдет, если вы получите кого-то с именем Салиша? [Салиш языки] (http://en.wikipedia.org/wiki/Salishan_languages) используют '7' в качестве буквы, например« Sḵwxwú7mesh »; и на менее неясной ноте, как насчет корейского, японского, китайского, ... Возможно, вы захотите прочитать [Falsenesss Programmers Believe About Names] (http://www.kalzumeus.com/2010/06/17/falsehoods-programmers- верить-о-именах /). Я в основном предлагаю, чтобы вы не беспокоились о своей проверке. –

+0

Я уже думал об азиатских и кириллических языках. У них есть латинские эквиваленты, которые они могут использовать. И ... Салиш - очень редкий случай. : D – buschtoens

ответ

4

http://www.regular-expressions.info/unicode.html Проверить и http://xregexp.com/plugins/

Вы должны использовать \p{L}, чтобы соответствовать любому письму характера, если вы хотите включить Юникод.

Говорящий юникод, альтернатива \w - [\p{L}\p{N}_].

+0

Думаю, вам нужно ['plugin'] (http://xregexp.com/plugins/), чтобы сделать это в js –

+0

@MrAnderson, а не плагин для браузера, просто JavaScript lib. silvinci использует Node.js, и его очень легко импортировать XRegExp в качестве модуля. – slevithan

+0

Проведите поиск по «классам символов POSIX». Режимы JavaScript поддерживают их, и они могут вообще (по крайней мере, для наиболее часто используемых человеческих языков) очень просто отвечать на такие вопросы, как «это письмо» или «это заглавная буква». – ebohlman

Смежные вопросы