Проверьте, встречается ли число 'x' количество раз с регулярным выражением - PullRequest
1 голос
/ 15 октября 2019

Можно ли написать регулярное выражение, которое проверяет, встречается ли данная цифра х раз?

Я пытаюсь использовать следующий код, чтобы определить, есть ли в данной строке (из 16 цифр),по крайней мере, более чем одна цифра очевидна. Например, если есть только одна цифра 16 раз, тогда не может быть двух разных цифр.

let multipleDigits = /[0-9]{16}/g.test(ccString);
    console.log('More than one digit? ' + result);

Вся функция:

function validator(ccNumber) {
    let ccString = ccNumber.toString();

Вызов и вывод:

validator(1111111111111112);
More than one digit? false

Ожидаемый результат - «истина». Буду признателен за любую помощь / руководство.

Спасибо

пс. Другой вариант регулярного выражения, которое я пробую:

let testOnlyOneDigit = /\d{16}/g;

Ответы [ 2 ]

1 голос
/ 15 октября 2019

Мы можем создать регулярное выражение, чтобы проверить, имеет ли число только одну уникальную цифру, а затем инвертировать этот результат и распечатать его.

Регулярное выражение:

/^(\d)\1{15}$/

Захватываетпервая цифра в группе 1, а затем проверяется, повторяется ли то, что в группе 1, еще 15 раз.

Затем мы можем инвертировать результат с помощью !:

function validator(ccNumber) {
    let ccString = ccNumber.toString();
    let multipleDigits =/^(\d)\1{15}$/.test(ccString);
    console.log('More than one digit? ' + !multipleDigits);
}
validator(1111111111111111);
validator(1111111111111112);
1 голос
/ 15 октября 2019

Проверьте, содержит ли строка только единственную цифру , захватив \d в начале и сделав обратную ссылку на эту группу захвата до достижения конца строки. Затем отмените этот тест, чтобы увидеть, содержит ли строка какие-либо другие цифры:

const hasMoreThanOneDigit = num => !/^(\d)\1*$/.test(num.toString());
console.log(hasMoreThanOneDigit(1111111111111112));
console.log(hasMoreThanOneDigit(1111111111111));

Если вы не можете рассчитывать на то, что ввод является числом, и вам также необходимо это проверить («числовая строка, которая содержит как минимум две разные цифры»)тогда тест должен быть немного более сложным: сопоставить и захватить цифру, затем сопоставить больше цифр и, в конце концов, сопоставить цифру, которая не совпадает с захваченной цифрой, поставив перед ней отрицательный прогноз:

const hasMoreThanOneDigit = num => /^(\d)\d*(?!\1)\d+$/.test(num.toString());
console.log(hasMoreThanOneDigit(1111111111111112));
console.log(hasMoreThanOneDigit(1111111111111));
console.log(hasMoreThanOneDigit('111111AAA1111111'));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...