Я хочу записать регулярное выражение для проверки Имени. Регулярное выражение должно включать все алфавиты (латинские/французские/немецкие символы и т.д.). Однако я хочу исключить числа из него и также позволить -
. Так в основном это \w
(минус) числа (плюс) -
.
Помогите.
^[\p{L}-]+$
\ p {L}
соответствует любой букве из любого языка .
Если вы хотите найти решение вашей проблемы с валидацией для конкретного рубина, вы можете использовать это:
^[\D-]+$
Вы можете проверить эту постоянную ссылку здесь:
http://rubular.com/r/VrAIB4TkwJ
Я сделал это вики сообщества, чтобы каждый мог попробовать и при необходимости улучшить регулярное выражение.
Надеюсь, это поможет. Приветствую :)
Насколько мне известно, Ruby не поддерживает свойства Unicode (по крайней мере, до версии 1.8), поэтому вам может потребоваться
^(?:[^\W\d_]|-)+$
Explanation: [^ \ W \ d _]
соответствует любой букве (буквально это означает «Сопоставить символ, не являющийся буквенно-цифровым символом, цифрой или знаком подчеркивания»). В этом случае двойной минус - правильный выбор. Поскольку мы используем инвертированный символьный класс, нам нужно разрешить -
путем чередования.
Предостережение: Из regular-expressions.info похоже, что Ruby сопоставляет символы ASCII только с сокращением \ w
, поэтому это регулярное выражение может работать не так, как задумано. У меня здесь не установлен Ruby, но на rubular.com это регулярное выражение работает правильно.
Альтернативное решение
^[[:alpha:]-]+$
должно соответствовать не-ASCII символам в соответствии с regular-expressions.info и RegexBuddy, но на rubular.com это не работает.