Регулярное выражение для проверки всего слова - PullRequest
2 голосов
/ 19 июля 2010

У меня есть это выражение ([a-zA-Z]|ñ|Ñ)*, которое я хочу использовать, чтобы заблокировать все символы, кроме букв и Ñ для ввода в текстовое поле. Проблема состоит в том, что возвращают совпадение для: A9023, но также для 32 "" ". Как можно сделать так, чтобы возвращалось совпадение для A9023, но не для 32" "". Благодаря.

Ответы [ 3 ]

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

Вам нужно добавить утверждения для начала и конца строки:

^([a-zA-Z]|ñ|Ñ)*$

В противном случае регулярное выражение совпадает в любой позиции. Кроме того, вы также можете написать ([a-zA-Z]|ñ|Ñ)* в качестве класса символов [a-zA-ZñÑ]*:

^[a-zA-ZñÑ]*$
0 голосов
/ 19 июля 2010

Вы не сказали, какой тип регулярного выражения (какой язык программирования) вы используете, но вы можете рассмотреть либо

^\p{L}*$

, если ваш регулярный выражение поддерживает свойства Unicode или

^[^\W\d_]*$

если нет.

Причина: Ваше регулярное выражение будет разрешать только буквы без акцента и С - существует ли реальный язык, который использует последние, не имея также букв с акцентом?

\p{L} означает «любая буква на любом« языке »»,

[^\W\d_] означает «любой символ, который не является ни буквенно-цифровым, ни цифрой, ни подчеркиванием», что является просто причудливым, но необходимым способом сказать «любая буква» (\w - сокращение от «буквы цифра или подчеркивание ", \W является обратным к этому).

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

Уверен, что вы не имеете в виду ^([a-zA-Z]|ñ|Ñ)*$ - возможно, вы находите нужные символы, но не исключаете того, что нет?Выражение, которое я упомянул, будет прикреплено к началу ^ и концу $ строки, так что больше ничего не пройдет.В противном случае:

123ABC456

... пропустит ваше совпадение, потому что он нашел 0 или более букв ... хотя были и другие буквы.

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