2016-08-05 3 views
4

Я использую regex для проверки чисел в angularjs. Но мой код показывает ошибку проверки, когда число превышает 9 цифр. Может кто-то попросит меня исправить мой код, чтобы можно было ввести любые цифры номера.Ошибка проверки регулярного выражения

То, что я попытался это:

ng-pattern="/^\d{0,9}?$/" 
+0

'\ d {0,9}?' Зачем использовать '?' Здесь – Tushar

+0

@Tushar из-за [этого] (http://stackoverflow.com/a/38790314/256196)? – Bohemian

ответ

3

Просто удалить {0,9}? и использовать * вместо того, чтобы, как

/^\d*$/ 

{0,9} означает, любая длина между 0 и 9

+0

Можете ли вы сказать мне, что я должен добавить, если мне нужно также проверить десятичные знаки. То, что я пробовал раньше, было похоже на ng-pattern = "/^\ d {0,9} (\. \ D {1,9})? $ /" – anju

+1

@anju Здесь: "/^[\ d] * [\ .]? [\ d] * $/" – scokmen

+0

благодарю вас за помощь @scokmen – anju

2

Просто изменить {0,9} квантор с *. И удалить ? - это бесполезно:

ng-pattern="/^\d*$/" 

Для десятичных значений:

ng-pattern="/^\d*(\.\d+)?$/" 
+0

вы можете мне сказать, что мне добавить, если мне нужно также проверять десятичные знаки. То, что я пробовал раньше, было похоже на ng-pattern = "/^\ d {0,9} (\. \ D {1,9})?$/" – anju

+1

Я считаю, что открытые кванторы в вашем случае просто прекрасны:' $ \ d * (\. \ D +)? $ '. Это приводит к простому регулярному выражению. –

+0

благодарю вас за помощь – anju

1

Использование:

"/^\d*?$/" 

\d{0,9} = матч 0 до 9 цифр

\d* = матч 0 до N цифр

\ д = цифра: 0 или 1 или 2 или 3 или 4 или 5, или 6, или 7, или 8, или 9

+0

вы можете мне сказать, Я добавлю, если мне нужно также проверить десятичные знаки. То, что я пробовал раньше, было похоже на ng-pattern = "/^\ d {0,9} (\. \ d {1,9})? $ /" – anju

+0

Вы не нужно '?' при использовании квантора '*' – Tushar

3

Я подозреваю, что проблема понимания разницы между:

  • {0,9}
  • [0-9]

{0,9} означает «ноль до 9 повторений предыдущего срока», который в данном случае означает «от нуля до 9 цифр».

[0-9] означает «символ в диапазоне от 0 до 9 (включительно)», что совпадает с \d.

Try:

/^\d+$/ 

Что означает "все цифровой ввод" и исключает пустой ввод.

Чтобы разрешить десятичный вход тоже избежать точку и сделать десятичную часть дополнительно:

/^\d+(\.\d+)?$/ 

что означает «по меньшей мере, одну цифру, необязательно сопровождаемого точкой и, по меньшей мере, одну цифру».

+0

Спасибо за вашу помощь. Что я должен добавить, если мне нужно также проверять десятичные знаки. То, что я пробовал раньше, было похоже на ng-pattern = "/^\ d {0,9} \. \ d {1,9})? $/" – anju

+0

@anju пустой вход разрешен слишком? – Bohemian

+0

нет не разрешено @ Bohemian – anju

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