Как я могу проверить такую ​​группу чисел в JavaScript Regexp? - PullRequest
2 голосов
/ 12 июля 2020

Как сопоставить группу из 10 номеров 1 или mores раз (он должен разделяться ,, если более одной группы).

pattern: 0123456789,9876543210,...

И каждая группа должна начинаться с 00

pattern: 0023456789,0076543210,00...

Я пытаюсь сделать вот так, но застрял:

/(?:\d{10}(?:,(?!$)|$)){1,}/.test('1111111111')

Вот шаблоны, которые я хочу:

/pattern/.test('0012345678') // should true
/pattern/.test('0012345678,0012345678') // should true

Ответы [ 3 ]

1 голос
/ 12 июля 2020

Вот регулярное выражение, которое сделает это.

/^00[0-9]{8}(,00[0-9]{8})*$/
0 голосов
/ 12 июля 2020

Это не регулярное выражение, но оно отлично работает!

console.log(check('0012345678'));
console.log(check('0012345678,0012345678'));
console.log(check('hi'));
console.log(check('00hello123,0011111111'));
console.log(check());
console.log(check(''));
console.log(check('0000000000'));
/* expected output:

   true
   true
   false
   false
   false
   false
   true
*/

function check(numbers) {
  if (numbers === undefined) {
    return false;
  }
  numbers = String(numbers);
  if (numbers == '') {
    return false;
  }
  for (var i of numbers.split(',')) {
    if (i.length != 10) { // length must be 10
      return false;
    }
    if (i.replace(/[0-9]*/, '') != '') { // contains only numbers
      return false;
    }
    if (!i.startsWith('00')) { // starts with "00"
      return false;
    }
  }
  return true;
}
0 голосов
/ 12 июля 2020

Попробуйте это регулярное выражение /^(00\d{8})(?:,(00\d{8}))*$/, чтобы сопоставить группу из 10 чисел 1 или более раз.

const pattern = /^(00\d{8})(?:,(00\d{8}))*$/
console.log(pattern.test('0123456789')) //should false
console.log(pattern.test('0123456789,9876543210')) //should false
console.log(pattern.test('0023456789')) //should true
console.log(pattern.test('0023456789,0076543210')) //should true
console.log(pattern.test('0023456789,0076543210,0123456789')) //should false
console.log(pattern.test('00123456789999999')) //should false
console.log(pattern.test('00123456789999999,0023456789')) //should false
console.log(pattern.test('0023456789,00123456789999999')) //should false
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...