2015-07-04 6 views
0

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

Пример соответствует

0 
50 
798 

Пример отвергает

01 
046 
0014 
00 
0001 

Моя попытка была использовать /[0]|[1-9][0-9]*/ в соответствии со значениями в следующем тексте:

0, 50, 798
01, 046, 0014, 00, 0001

Эта попытка может быть запущена на http://regexr.com/3bb00

+0

Вы должны включать регулярный язык выражений и ваш тестовый пример в самом вопросе. – Anonymous

+0

спасибо за обновление моего сообщения. – zuhair

ответ

4

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

^(0|[1-9]\d*)$ 

см Демонстрационный https://regex101.com/r/zT8uI2/2

Это регулярное выражение содержит 2 части, 0 или [1-9]\d* который является цифрой, что Безразлично» t начинается с нуля.

Обратите внимание, что если вы хотите, чтобы соответствовать вашим номерам в других текстах вам нужна слово граница вместо начальных и конечных якорей:

\b(0|[1-9]\d*)\b 

см демонстрационной https://regex101.com/r/zT8uI2/3

+0

'(?: \ D +)?' Может быть написано как '\ d *' –

+0

@RakholiyaJenish Да, конечно;) спасибо! – Kasramvd

+0

Это не соответствует значениям, разделенным запятой, как показано в OP. – Anonymous

0

Хм, почему бы не что-то вроде ..

if(input[0] == '0' && input.size() > 1) // reject 
else //accept 
1

кажется, что у вас есть два случая в своем регулярном выражении:

  1. Соответствие нулю
  2. Соответствующие цифры, которые не начинаются с нуля.

Первый случай легко: /0/

Второй случай также довольно легко /[1-9]\d*/. [1-9] соответствует цифре, которая не равна 0. Затем мы можем иметь 0 или более цифр.

Чтобы получить обоих этих случаях, просто использовать бар, чтобы сделать что-либо или

/0|[1-9]\d*/ 

 Смежные вопросы

  • Нет связанных вопросов^_^