Определите, является ли строка всеми прописными буквами с регулярным выражением - PullRequest
19 голосов
/ 24 февраля 2010

Как определить, является ли строка всеми заглавными буквами с регулярным выражением. Он может содержать знаки препинания и цифры, но не строчные буквы.

Ответы [ 8 ]

21 голосов
/ 24 февраля 2010
m/^[^a-z]*$/

Для неанглийских символов

m/^[^\p{Ll}]*$/
9 голосов
/ 24 февраля 2010

Звучит так, как вы хотите: ^[^a-z]*$

5 голосов
/ 24 февраля 2010

Почему бы просто не использовать if (string.toUpperCase () == string)?._.Это более "элегантно" ...
Я думаю, что вы пытаетесь форсировать в RegExp, но, как сказал кто-то другой, я не думаю, что это лучшее использование регулярного выражения ...

2 голосов
/ 24 февраля 2010

Строка содержит строчную букву, если выражение /[a-z]/ возвращает значение true, поэтому просто выполните эту проверку, если значение равно false, строчных букв нет.

1 голос
/ 24 февраля 2010

Казалось бы, самое простое:

^[^a-z]*$
0 голосов
/ 24 февраля 2010

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

^(?=[^a-z]*$)MORE_REGEX$

Например, чтобы убедиться, что первый и последний символы буквенно-цифровые:

^(?=[^a-z]*$)[A-Z0-9].*[A-Z0-9]$
0 голосов
/ 24 февраля 2010
$str="ABCcDEF";
if ( preg_match ("/[a-z]/",$str ) ){
    echo "Lowercase found\n";
}
0 голосов
/ 24 февраля 2010

Как насчет (s == uppercase(s)) -> строка это все заглавные буквы?

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