Постоянная проверка RegEx для конкретной строки - PullRequest
0 голосов
/ 13 мая 2019

Я пытаюсь написать совпадение регулярного выражения в JavaScript для такой строки, как [любые четыре цифры] [один дефис] [три буквенно-цифровых символа]. Проверка должна происходить непрерывно. Это означает, что частичный Mach также должен возвращать true.

Мне удалось проверить строки вроде [любые четыре цифры] [один дефис]
1232-
4323-
Но я не могу подтвердить [три алфавитно-цифровые] части

ниже приводится мое регулярное выражение для первых двух частей

let reg = /^[[0-9.\-]{1,6}]$/;

Ожидается успешная проверка таких строк, как

3432-ad3
6548-333
7654-2d1
5649-dse

Ответы [ 3 ]

0 голосов
/ 13 мая 2019

\d{4} соответствует 4 цифрам, \- спички - буквально \w{3} соответствует 3 из [a-zA-Z0-9_]

^\d{4}\-\w{3}$

ОБНОВЛЕНИЕ: \w будет соответствовать другим символам, кроме A-Z0-9, поэтому

^\d{4}\-[a-zA-Z0-9]{3}$

будет правильнее

Чтобы соответствовать случаям, когда у вас ничего нет после -:

^\d{4}\-([a-zA-Z0-9]{3})?$

([a-zA-Z0-9]{3}) - это группа, соответствующая 3 из a-zA-Z0-9 ? - это квантификатор, не совпадающий ни с одним или точно с этой группой

0 голосов
/ 13 мая 2019

Вы можете создавать / изменять / изменять выражения в regex101.com .Возможно, вы захотите написать выражение, похожее на:

[0-9]{4}-[A-Za-z0-9]{3}

enter image description here

Схема RegEx

Вы можете визуализировать свои выражения в jex.im :

enter image description here

const regex = /[0-9]{4}-[A-Za-z0-9]{3}/gm;
const str = `3432-ad3 
6548-333 
7654-2d1 
5649-dse `;
let m;

while ((m = regex.exec(str)) !== null) {
    // This is necessary to avoid infinite loops with zero-width matches
    if (m.index === regex.lastIndex) {
        regex.lastIndex++;
    }
    
    // The result can be accessed through the `m`-variable.
    m.forEach((match, groupIndex) => {
        console.log(`Found match, group ${groupIndex}: ${match}`);
    });
}
0 голосов
/ 13 мая 2019
^[0-9]{4}-[0-9a-zA-Z]{3}$
  • ^ - начало строки
  • [0-9]{4} - разрешены только цифры (символы от 0 до 9) и только 4 из них
  • - - тире
  • [0-9a-zA-Z]{3} - допускаются цифры (от 0 до 9), строчные буквы (a - z) или прописные буквы (A - Z), и только 3 из них.
  • $ - конец строки
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...