2016-12-09 2 views
0

Я только постигал азы RegEx и придумать регулярное выражениеRegex, соответствие шаблону «1AA11AA111»

"^\\d[a-zA-Z]{2}\\d{2}[a-zA-Z]{2}\\d{3}$" 

, чтобы соответствовать заданному шаблону. Он работает абсолютно нормально. Мой вопрос в том, каковы другие альтернативные способы достижения того же?

+0

Определить лучше .. быстрее при обработке? Меньше персонажей? Легче понять? – brandonscript

+0

Ничего .. как я учусь ... Я хочу понять альтернативные решения. –

+0

Затем скажите «какие еще решения существуют, чтобы соответствовать этому шаблону», а не «есть лучший способ». – brandonscript

ответ

6

Вы можете использовать группы захвата и обратно ссылки на них

Regex Demo

(\d)([A-Z])\2\1{2}\2{2}\1{3} 

(\d): захватить одну цифру

([A-Z]): захват слова, длина 1

([A-Z])\2 => \2: матч второго найдено 1 раз, что было найдено: ([A-Z])

\1{2}: матч впервые обнаружили группу, 1 раз, которое было найдено с (\d)

\2{2}: матч второго найдено группа, 2 раза, который был найден с ([A-Z])

\1{3}: матч впервые обнаружили группу, 3 раза, что был найден с (\d)

Примечание: \1\2 подобны идентичностей данных групп ()

Update: захватить конкретный случай чувствительный характер, просто избежать регистрозависимости флаг т.е. /i или захватить только конкретный тип использования ([a-z]) или ([A-Z]), который лучше, потому что \w значит захватить эти a-zA-Z0-9_

+1

В частности, группы захвата _and_ backreferences – brandonscript

+0

@brandonscript спасибо, я нахожусь на нем –

+0

(\ w) соответствует номерам. Я не хочу этого. Он должен быть конкретным только для букв верхнего и нижнего регистра. –

Смежные вопросы