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