Как проверить входные значения с помощью регулярных выражений? - PullRequest
2 голосов
/ 03 июля 2019

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

Eg inputs : 70,900,80-20 // should return true as all are valid
as,@123 // should return false as it is not valid digit
12-123-12123-123123 // should also return false

Я пытаюсь использовать это в регулярных выражениях.Я пробовал это.

/^[\d,\-{1}]+/

Я не могу проверить с помощью этого регулярного выражения.Дайте мне знать, где я делаю не так

Ответы [ 2 ]

4 голосов
/ 03 июля 2019

Это регулярное выражение должно работать для вас:

/^\d+(-\d+)?(,\d+(-\d+)?)*$/

Пояснение:

  • ^ означает начинать с начала строки, отклонять строки с дополнительными элементами в начале
  • \d+(-\d+)? принимает число, за которым может следовать дефис и другое число:
    • \d+ означает одну или несколько цифр
    • -\d+ означает дефис плюс одну или несколько цифр
    • (...)? означает, что шаблон в скобках является необязательным
  • (,...)* принимает 0 или более запятых, за которыми следует тот же шаблон, что и выше
  • $ говорит, что соответствует до конца строки, чтобы отклонить строки с дополнительным материалом в конце
2 голосов
/ 03 июля 2019

/^\d+(-\d+)?(,\d+(-\d+)?)*$/

const input = document.querySelector( 'input' );
const msg   = document.querySelector( '.msg' );
const regex = /^\d+(-\d+)?(,\d+(-\d+)?)*$/;

input.addEventListener( 'keyup', function ( e ) {
  const str = regex.test( this.value ) ? 'Match!' : 'No Match';
  msg.textContent = str;
} );
<input type="text" name="numbers">
<div class="msg"></div>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...