Мені було цікаво, чи зможу я отримати регулярний вираз, який буде відповідати рядку, що містить лише алфавітні символи, і лише це.
àє алфавітним символом згідно з вашим визначенням? Якою мовою ви користуєтесь?
Мені було цікаво, чи зможу я отримати регулярний вираз, який буде відповідати рядку, що містить лише алфавітні символи, і лише це.
àє алфавітним символом згідно з вашим визначенням? Якою мовою ви користуєтесь?
Відповіді:
Ви можете використовувати будь-який із цих двох варіантів:
/^[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] повинен зробити це просто чудово.
Ви можете посилатися на шпаргалку .