Регулярное выражение для соответствия только буквенным символам

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

Ответ 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]+$
Чтобы понять, как использовать его в функции для проверки текста, посмотрите этот пример