Regex в рельсах, чтобы соответствовать [\ w] и "-", но не числа - PullRequest
5 голосов
/ 02 июля 2010

Я хочу написать регулярное выражение для проверки имени.Регулярное выражение должно включать все алфавиты (латинские / французские / немецкие символы и т. Д.).Однако я хочу исключить из него числа, а также разрешить -.Так что в основном это \w (минус) цифры (плюс) -.

Пожалуйста, помогите.

Ответы [ 3 ]

6 голосов
/ 02 июля 2010
^[\p{L}-]+$

\p{L} соответствует любому виду букв на любом языке .

5 голосов
/ 02 июля 2010

Насколько я знаю, Ruby не поддерживает свойства Unicode (по крайней мере до версии 1.8), поэтому вам, возможно, придется использовать

^(?:[^\W\d_]|-)+$

Объяснение: [^\W\d_] соответствует любой букве (буквально это означает "Совпадает с символом, который не является ни буквенно-цифровым символом, ни цифрой, ни подчеркиванием"). В этом случае двойной минус - это правильная вещь. Поскольку мы используем отрицательный класс символов, нам нужно разрешить - поочередно.

Предупреждение: Начиная с регулярные-выражения.info похоже, что Ruby сопоставляет только символы ASCII с сокращением \w, поэтому это регулярное выражение может работать не так, как задумано. У меня не установлен Ruby, но на rubular.com это регулярное выражение работает правильно.

Альтернативное решение

^[[:alpha:]-]+$

должно соответствовать не-ASCII-символам согласно регулярным-выражениям.info и RegexBuddy, но на rubular.com это не работает.

0 голосов
/ 02 июля 2010

Если вы хотите получить решение для валидации, подходящее для ruby, то вы можете использовать это:

^[\D-]+$

Вы можете проверить эту постоянную ссылку здесь:

http://rubular.com/r/VrAIB4TkwJ

Я сделал это вики-сообществом, чтобы каждый мог попробовать и улучшить регулярное выражение, если потребуется.

Надеюсь, это поможет. Ура:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...