Как написать регулярное выражение в JS для первых 2 символов может быть ди git или алфавит, а затем дефис и затем 6 ди git число? - PullRequest
0 голосов
/ 13 января 2020

Я пытаюсь создать регулярное выражение для следующего формата:

12-345678  Matches
AB-345678  Matches

$12-345678 Failed
%%-SDdfdf  Failed
  1. Первые 2 символа должны быть алфавитом или ди git например AA или 12
  2. Третий символ должен быть обязательным - (дефис) и
  3. Последние шесть символов должны быть ди git
  4. Строка не должна превышать 9 символов

Я написал следующее Regex, но он не работает:

$('#customer-number').keyup(function(){
$(this).val($(this).val().replace(/^(d{2}|[a-z]{2})\-\\d{6}/,'$1-'))
});

Но Regex не работает:

/^(d{2}|[a-z]{2})\-\\d{6}/

Я новичок в regex, пожалуйста, помогите мне

Ответы [ 3 ]

1 голос
/ 13 января 2020

Вы пропустили \ до d , вам нужно добавить A-Z в верхнем регистре, и вы добавили \, который экранирует другие \.

^(\d{2}|[a-zA-Z]{2})\-\d{6}

Демо: https://regex101.com/r/SEQGOq/1

1 голос
/ 13 января 2020

Попробуйте это регулярное выражение /^([a-zA-Z]{2}|[0-9]{2})-\d{6}/g

function matchString() { 
        var test1 = "11-122121";
        var test2 = "1a-122121"; 
        var test3 = "aa-122121"; 
        var result1 = test1.match(/^([a-zA-Z]{2}|[0-9]{2})-\d{6}/g); 
        var result2 = test2.match(/^([a-zA-Z]{2}|[0-9]{2})-\d{6}/g); 
        var result3 = test3.match(/^([a-zA-Z]{2}|[0-9]{2})-\d{6}/g); 
        document.write("Output1 : " + result1 + "<br>");         
        document.write("Output2 : " + result2 + "<br>");
        document.write("Output3 : " + result3);
    } matchString();
1 голос
/ 13 января 2020

Попробуйте следующее

/^[a-zA-Z0-9]{2}-\d{6}/

Где

^ устанавливает положение в начале строки

a-z один символ в диапазоне между a (индекс 97) и z (индекс 122) (с учетом регистра)

A-Z один символ в диапазоне между A (индекс 65) и Z (индекс 90) (с учетом регистра)

0-9 один символ в диапазоне от 0 (индекс 48) до 9 (индекс 57) (с учетом регистра)

{2} Квантор - точно соответствует 2 раза

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

\d соответствует di git (равно [0-9])

{6} Quantifier - соответствует ровно 6 раз

Демо:

console.log(/^[a-zA-Z0-9]{2}-\d{6}/.test('12-345678'));  //true
console.log(/^[a-zA-Z0-9]{2}-\d{6}/.test('AB-345678'));  //true
console.log(/^[a-zA-Z0-9]{2}-\d{6}/.test('$12-345678')); //false
console.log(/^[a-zA-Z0-9]{2}-\d{6}/.test('%%-SDdfdf'));  //false
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...