Мне было интересно, если бы я мог получить регулярное выражение, которое будет соответствовать строке, содержащей только альфахабитные символы, и только один
Регулярное выражение для соответствия только буквенным символам
Ответ 1
Вы можете использовать любой из этих 2 вариантов:
/^[A-Z]+$/i
/^[A-Za-z]+$/
соответствовать входной строке алфавитов ASCII.
-
[A-Za-z]
будет соответствовать всем алфавитам (как строчным, так и прописным). -
^
и$
убедятся, что ничего кроме этих алфавитов не будет найдено.
Код:
preg_match('/^[A-Z]+$/i', "abcAbc^Xyz", $m);
var_dump($m);
Выход:
array(0) {
}
Тестовый случай предназначен для комментария OP, который он хочет сопоставить, только если на входе присутствуют 1 или более алфавитов. Как вы можете видеть в тесте, что матч не удались, потому что был ^
во входной строке abcAbc^Xyz
.
Примечание. Обратите внимание, что приведенный выше ответ соответствует только алфавиту ASCII и не соответствует символам Юникода. Если вы хотите сопоставить буквы юникода, используйте:
/^\p{L}+$/u
Ответ 2
Если вам нужно включить алфавитные символы, отличные от ASCII, и если ваш аромат регулярного выражения поддерживает Unicode, то
\A\pL+\z
будет правильным регулярным выражением.
Некоторые механизмы регулярных выражений не поддерживают этот синтаксис Unicode, но позволяют буквенно-цифровое сокращение \w
также соответствовать символам, отличным от ASCII. В этом случае вы можете получить все алфавиты, вычитая цифры и символы подчеркивания из \w
следующим образом:
\A[^\W\d_]+\z
\A
совпадает с началом строки, \z
в конце строки (^
и $
также совпадают в начале/конце строк на некоторых языках, таких как Ruby, или если определенное регулярное выражение параметры установлены).
Ответ 3
Это будет соответствовать одному или нескольким алфавитным символам:
/^[a-z]+$/
Вы можете сделать его регистрозависимым, используя:
/^[a-z]+$/i
или
/^[a-zA-Z]+$/
Ответ 4
В Ruby и других языках, поддерживающих классы символов POSIX в выражениях скобок, вы можете сделать просто:
/\A[[:alpha:]]+\z/i
Это будет соответствовать альфа-символам на всех языках алфавита Unicode. Легкий peasy.
Дополнительная информация: http://en.wikipedia.org/wiki/Regular_expression#Character_classes http://ruby-doc.org/core-2.0/Regexp.html
Ответ 5
[a-zA-Z]
должен делать это просто отлично.
Вы можете ссылаться на шпаргалку.
Ответ 6
^[A-Za-z]+$
Чтобы понять, как использовать его в функции для проверки текста, посмотрите этот пример