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