Мне было интересно, смогу ли я получить регулярное выражение, которое будет соответствовать строке, содержащей только буквенные символы, и только это.
àли буквенный символ по вашему определению? Какой язык вы используете?
Мне было интересно, смогу ли я получить регулярное выражение, которое будет соответствовать строке, содержащей только буквенные символы, и только это.
àли буквенный символ по вашему определению? Какой язык вы используете?
Ответы:
Вы можете использовать любой из этих 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] должен сделать это просто отлично.
Вы можете ссылаться на шпаргалку .