Я пытаюсь создать регулярное выражение, чтобы убедиться, что в данной строке есть только альфа
символы a-z или A-Z.
Легко сделать, так как многие другие указали, используя так называемые "классы персонажей". По сути, они позволяют нам указать диапазон значений, которые будут использоваться для сопоставления:
(ПРИМЕЧАНИЕ: для упрощения я предполагаю, что якоря implict ^ и $ будут объяснены ниже в этом посте)
[a-z] Соответствует любой отдельной строчной букве.
например: совпадения, 8 не совпадают
[A-Z] Соответствует любой заглавной букве.
Например: совпадения, а не совпадения
[0-9] Соответствует любой цифре от нуля до девяти
например: 8 совпадений, не соответствует
[aeiou] Совпадают только на a или e или i или o или u.
пример: o соответствует, z не соответствует
[a-zA-Z] Соответствует любой отдельной строчной или заглавной букве.
пример: совпадения, совпадения, 3 не совпадают
Их, естественно, тоже можно отрицать:
[^ a-z] Подберите все, что НЕ является строчной буквой
например: 5 совпадений, A совпадений, a не совпадений
[^ A-Z] Подберите все, что НЕ является заглавной буквой
пример: 5 матчей, А не соответствует, совпадения
[^ 0-9] Совпадение с любым, что НЕ является числом
например: 5 не соответствует, A соответствует, соответствует
[^ Aa69] Совпадение с чем угодно, если только это не A или a или 6 или 9
пример: 5 совпадений, A не соответствует, a не соответствует, 3 соответствия
Чтобы увидеть некоторые общие классы символов, перейдите по адресу:
http://www.regular -expressions.info / reference.html
Строка может содержать до 25 букв.
(Я не уверен, что регулярное выражение может проверять длину строк)
Вы можете абсолютно точно проверить «длину», но не так, как вы себе представляете. Мы измеряем повторение, а НЕ длину, строго говоря, используя {}:
a {2} Совпадение двух символов a.
пример: а не соответствует, аа соответствует, ака не соответствует
4 {3} Соедините три 4 вместе.
например: 4 не соответствует, 44 не соответствует, 444 соответствует, 4434 не соответствует
Повторение имеет значения, которые мы можем установить, чтобы иметь нижний и верхний пределы:
a {2,} Совпадение двух или более элементов a вместе.
например: a не соответствует, aa соответствует, aaa соответствует, aba не соответствует, aaaaaaaaa соответствует
a {2,5} Совпадение от двух до пяти очков.
например: a не соответствует, aa соответствует, aaa соответствует, aba не соответствует, aaaaaaaaa не соответствует
Повторение распространяется на классы персонажей, поэтому:
[a-z] {5} Совпадение любых пяти символов нижнего регистра вместе.
Например: Bubba соответствует, Bubba не соответствует, BUBBA не соответствует, asdjo соответствует
[A-Z] {2,5} Совпадение от двух до пяти символов в верхнем регистре вместе.
Например: Bubba не соответствует, Bubba не соответствует, BUBBA соответствует, BUBBETTE не соответствует
[0-9] {4,8} Соедините четыре-восемь чисел вместе.
например: bubba не соответствует, 15835 соответствует, 44 не соответствует, 3456876353456 не соответствует
[a3g] {2} Совпадение с ИЛИ 3 ИЛИ g, если они появляются дважды вместе.
например: aa соответствует, ba не соответствует, 33 соответствует, 38 не соответствует, a3 НЕ соответствует
Теперь давайте посмотрим на ваше регулярное выражение:
[^ а-г] | [^ A-Z]
Перевод: сопоставляйте что угодно, только если это НЕ строчная буква ИЛИ заглавная буква.
Чтобы исправить это так, чтобы оно соответствовало вашим потребностям, мы переписали бы его так:
Шаг 1: убрать отрицание
[A-Z] | [A-Z] * * одна тысяча девяносто семь
Перевод: Найдите любую строчную букву ИЛИ заглавную букву.
Шаг 2: Хотя в этом нет особой необходимости, давайте немного очистим логику ИЛИ
[A-Za-Z]
Перевод: Найдите любую строчную букву ИЛИ заглавную букву. То же, что и выше, но теперь используется только один набор [].
Шаг 3: Теперь давайте укажем «длину»
[A-Za-Z] {1,25}
Перевод: Найдите любую строчную букву ИЛИ заглавную букву, повторяемую от одного до двадцати пяти раз.
Здесь вещи становятся все более забавными. Вы можете подумать, что вы сделали здесь, и вы можете зависеть от технологии, которую вы используете.
Строго говоря, регулярное выражение [a-zA-Z] {1,25} будет соответствовать от одной до двадцати пяти заглавных или строчных букв ВСЕГДА в строке:
[A-Za-Z] {1,25}
спички, AZGD, BUBBA, 243242hello242552 МАТЧИ
Фактически, каждый приведенный мной пример будет делать то же самое. Если это то, что вы хотите, то вы в хорошей форме, но, основываясь на своем вопросе, я предполагаю, что вы хотите ТОЛЬКО от одной до двадцати пяти заглавных или строчных букв на всей строке. Для этого обратимся к якорям. Якоря позволяют нам указывать такие неприятные детали:
^ начало строки
(Я знаю, мы просто использовали это для отрицания раньше, не начинайте меня)
$ конец строки
Мы можем использовать их так:
^ a {3} С начала строки сопоставьте три раза вместе
например: совпадения aaa, совпадения 123aaa, совпадения aaa123
a {3} $ Совпадение три раза вместе в конце строки
например: совпадения aaa, совпадения 123aaa, совпадение aaa123
^ a {3} $ Совместите три раза вместе для строки ENTIRE
например: aaa соответствует, 123aaa не соответствует, aaa123 не соответствует
Обратите внимание, что aaa совпадает во всех случаях, потому что у него есть три буквы a в начале и в конце строки с технической точки зрения.
Таким образом, окончательное, технически правильное решение для поиска «слова» в строке длиной до пяти символов будет иметь вид:
^ [A-Za-Z] {1,25} $
Самое интересное в том, что некоторые технологии неявно ставят якоря в регулярное выражение для вас, а некоторые - нет. Вам просто нужно проверить свое регулярное выражение или прочитать документы, чтобы увидеть, есть ли у вас неявные якоря.