Регулярное выражение для 6-значного цифрового ввода. Каждые 6 цифр входных номеров должны быть разделены запятой

Мой пользовательский интерфейс запрашивает входные данные User_ID и Supplier_ID, и я хотел, чтобы проверка строки принимала входные данные для Supplier_ID, как показано ниже:

1st scenario: 123456
2nd scenario: 123456,098765
3rd scenario: 123456,098765,345678

Хотя он не должен принимать входные данные, такие как:

1st scenario: Any number less than 6 digits like 123
2nd scenario: Any number more than 6 digits 1234567
3rd scenario: Inputs with comma in the end or even at the beginning - 123456,098765,345678, or ,098765,345678

Я буду использовать входные данные для Supplier_ID по этому запросу ниже:

UPDATE ABC.Items
SET Crit_Limit = 'Y' 
WHERE User_ID = 'userID'         
AND Supplier_ID in (suppID)

Переменная suppID будет содержать входные данные из UI Supplier_ID, поэтому запрос будет выглядеть следующим образом:

UPDATE ABC.Items
SET Crit_Limit = 'Y' 
WHERE User_ID = '007'         
AND Supplier_ID in (123456,098765,345678)

В любом случае, поле Supplier_ID имеет длину 6 и должно быть числовым.

Заранее спасибо!

3 ответа

Этот шаблон соответствует вашим тестам и для любого количества групп из 6 цифр, разделенных запятой.

^\d{6}(,\d{6})*$

Создайте свое регулярное выражение в качестве поисковых групп и сначала проверьте наличие новой строки, затем 6 цифр, а затем , затем следуют 6-значные группы.

['123456',
  '123456,098765',
  '123456,098765,345678',
  '123456,0987s65,345678',
  '12345,098765,345678',
  '123456/098765'
]
.forEach(function(line) {
  if (line.toString().replace(/(^\d{6}(,\d{6})*)/gm, '').length < 1) {
    console.log(line, "matches");
  } else {
    console.log(line, "does not match");
  }
});

Это выражение, которое вы ищете

^\d{6}(\,\d{6}){0,2}$
Другие вопросы по тегам