Регулярное выражение для буквенно-цифрового слова начинается с алфавита - PullRequest
1 голос
/ 31 мая 2019

У меня есть требование найти и вернуть первое вхождение шаблона из строки.

Пример : найдите номер моей модели RT21M6211SR / SS и сохраните его

Ожидаемый результат : RT21M6211SR / SS

Условие соответствия шаблона

  1. Комбинация цифр и алфавитов
  2. Длина символов от 6 до 14
  3. Может содержать или не содержать специальные символыкак '-' или '/'
  4. Начинается всегда с алфавита

То, что я пробовал, но это не сработало для 4-го условия

var str = 'Please find my model number RT21M6211SR/SS and save it';
var reg = /\b(\w|\d)[\d|\w-\/]{6,14}\b/;
var extractedMNO = '';
var mg = str.match(reg) || [""];
console.log('regular match mno', mg[0]);

1 Ответ

2 голосов
/ 31 мая 2019

\w соответствует символам слова, включая _ и цифры.Если вы хотите сопоставлять только буквы алфавита, используйте [a-z] для сопоставления с первым символом.

Кроме того, поскольку вы хотите сопоставить длины 6–14, после сопоставления с первым символом вы должны повторить набор символовс {5,13}, так что повторяющиеся символы плюс первый символ получаются длиной 6-14 символов.

var str = 'Please find my model number RT21M6211SR/SS and save it';
console.log(str.match(/\b[a-z][a-z0-9\/-]{5,13}/gi)[2]);

Но так как совпадающая строка должна содержать цифры (а не только разрешать цифры), то вам нужно сделатьУбедитесь, что в соответствующей подстроке также есть цифра, которую вы можете выполнить, используя указатель на цифру сразу после сопоставления с алфавитом в начале:

var str = 'Please find my model number RT21M6211SR/SS and save it';
console.log(str.match(/\b[a-z](?=[a-z\/-]{0,12}[0-9])[a-z0-9\/-]{5,13}/gi));
//                            ^^^^^^^^^^^^^^^^^^^^^^^

Если вы хотите разрешить другие специальные символы, просто добавьте их в набор (ы) символов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...