2017-01-11 3 views
0

Я хочу проверить формат цены, который может иметь значения, например. ₹ 3.50L, ₹ 3,50, ₹ 3.50Cr, ₹ 99.50L, ₹ 3L, ₹ 300.50Cr, ₹ 350Cr, ₹ 3,50,000, ₹ 1Javascript Regex для проверки цены в Индии

Я попробовал этот Regex: ^₹ ([0-9]+(,[0-9]+)*|[0-9]+(.[0-9]+)*(L|Cr))+$ который должен потерпеть неудачу на цене ₹ 3 , 50L, но он все равно показывается как пропуск.

Какие изменения мне нужно сделать

+1

Не могли бы вы описать свои правила в понятном предложениях? Также я не совсем понимаю вашу точку и запятую. –

+0

Почему, по вашему мнению, он должен потерпеть неудачу по цене '3,50L'? В соответствии с регулярным выражением у вас есть '([0-9] + (, [0-9] +)' и он соответствует '3,50' – Dekel

+0

Возможно ['^₹ [0-9] + (?!, [0-9] + (?: L | Cr) $) (?:?, [0-9] +) * (?.? \ [0-9] +) (?: L | Cr) $ '] (https://regex101.com/r/LVKHz7/2)? –

ответ

-1

попробовать это регулярное выражение (избежать передней и задней пробельные по аккуратным()

^₹\s*[0-9]+((\.|[0-9])*\s*(L|Cr)?)|((\.|\,|[0-9])*\s*)$ 

я проверил его с этими значениями

  • ₹ 3.50L
  • ₹ 3.50
  • ₹ 3.50Cr
  • ₹ 99.50L
  • ₹ 3L
  • ₹ 300.50Cr
  • ₹ 350Cr
  • ₹ 3,50,000
  • ₹ 1
+0

ваше регулярное выражение все еще соответствует значениям, например, 3,500L, ₹ 35,000L. Как уже упоминалось, если ** ',' ** используется, то за номером не следует ** L ** или ** Cr ** –

+0

@DhavalSimaria обновляется, пожалуйста, проверьте – Sajan

+0

, он по-прежнему подходит для таких случаев, как ** ₹ 3. * *, ** ₹ 3, ** потому что вы поставили **. **, **, ** и ** числа ** в ** или ** т.е. '\. \\, | [0-9]' ,Следовательно, он будет принимать любой из трех входов. –

0

После регулярных выражений будет получить работу:

^₹ (([0-9]+\,[0-9]+)|([0-9]+[.]?[0-9]*(?:L|Cr)?))$ 

([0-9]+\,[0-9]+): Будет коврик ch, где ',' используется без L или Cr.

([0-9]+[.]?[0-9]*(?:L|Cr)?): Будет соответствовать ценности с L или Cr. Здесь '.' может использоваться или не использоваться.

Use cases on Regex101

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