Регулярное выражение: первый символ алфавит второй далее числовой - PullRequest
2 голосов
/ 09 апреля 2019

Это моя строка, которая всегда начинается с алфавита, за которым следуют 3 цифры, затем - (дефис), затем 3 цифры, затем алфавит, затем 4 цифры

I123-123S1234N1234

Я придумала регулярное выражение, которое кажется очень длинным! Как я могу написать лучшее выражение для этого?

[a-zA-Z][0-9][0-9][0-9][-][0-9][0-9][0-9][a-zA-Z].........goes on

Примечание

  • Должен поддерживать регистр без учета
  • Дефис, S и N всегда постоянны

Ответы [ 4 ]

3 голосов
/ 09 апреля 2019

Попробуйте это:

var testString = "I123-123S1234N1234";
var pattern = @"[A-Za-z]\d{3}-\d{3}[sS]\d{4}[nN]\d{4}";
var isMatch = Regex.Match(testString, pattern).Success;

Шаблон используется: [A-Za-z]\d{3}-\d{3}[sS]\d{4}[nN]\d{4}

Пояснение:

[A-Za-z] - соответствует любой букве

\d{3} - соответствует трём цифрам

[sS] - соответствует S или s буквально

\d{4} - соответствует четырем цифрам

[nN] - соответствует N или n буквально

\d{4} - соответствует четырем цифрам

3 голосов
/ 09 апреля 2019

Сначала используйте флаг без учета регистра, а затем при повторении токенов используйте {<number of times to repeat>} `вместо повторения себя:

(?i)[a-z][0-9]{3}-[0-9]{3}[a-z][0-9]{4}

Если вы хотите сопоставить также и конечный N1234,затем поместите последний [a-z][0-9]{4} в группу и повторите его дважды:

(?i)[a-z][0-9]{3}-[0-9]{3}(?:[a-z][0-9]{4}){2}

https://regex101.com/r/5ra1eU/1

Если S и N постоянны, то не используйте наборы символов длясопоставьте их, просто сопоставьте простые символы:

(?i)[a-z][0-9]{3}-[0-9]{3}S[0-9]{4}N[0-9]{4}

https://regex101.com/r/5ra1eU/2

2 голосов
/ 09 апреля 2019

, если вы уверены, что заглавные буквы и S и N постоянны:

[A-Z]\d{3}-\d{3}S\d{4}N\d{4}

[A-Z] - соответствует любой заглавной букве

\d{3} - соответствует 3 цифрам

S - соответствует S буквально

\d{4} - соответствует 4 цифрам

N - соответствует N буквально

\d{4} - соответствует 4 цифрам

, если вы хотите прописные и строчные буквы:

[a-zA-Z]\d{3}-\d{3}[Ss]\d{4}[Nn]\d{4}

или

(?i)[a-z]\d{3}-\d{3}s\d{4}n\d{4}
0 голосов
/ 09 апреля 2019

Это должно работать:

[a-zA-Z][0-9]{3}-[0-9]{4}[a-zA-Z][0-9]{4}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...