Может кто-нибудь подскажите, пожалуйста, как проверить, является ли введенная сумма (индийская валюта) в текстовом поле действительной или нет с использованием регулярного выражения?

У меня мало условий ..

  1. Сумма не должна содержать более 1 десятичной точки, но может иметь одну десятичную точку.
  2. Если есть десятичная точка, за ней должна следовать одна или несколько цифр.
  3. Сумма должна содержать только цифры и не более одного десятичного знака.
  4. Если я введу сумму, такую ​​как 10.000, она не будет принята, потому что она имеет 3 непрерывных нуля после запятой. но 56.8906 должны быть приняты.
  5. Если сумма начинается с нуля (т. Е. 0123), она не должна быть принята, но должна быть принята 0.0
^(?:0|[1-9]d*)(?:.(?!.*000)d )?$ 

должен делать то, что вы хотите.

Объяснение:

 ^ # Start of string. (?: # Try to match... 0 # either a 0 | # or [1-9]d* # an integer number {amp}gt; 0, no leading 0 allowed. ) # End of integer part. (?: # Try to match... . # a decimal point. (?! # Assert that it's not possible to match .*000 # any string that contains 000 from this point onwards. ) # End of lookahead assertion. d  # Match one or more digits. )? # End of the (optional) decimal part $ # End of string. 

В JavaScript:

 curRegExp = /^(?:0|[1-9]d*)(?:.(?!.*000)d )?$/; 

формат номера от 1000000 до 12,34,567.00

 {amp}lt;input id="item-purchase-amt" class="col-sm-12 form-control-plaintext tr-input" type="text" data-type="currency"{amp}gt; $(document).on('keyup', "input[data-type='currency']", function () { formatCurrency($(this)); }); $(document).on('blur', "input[data-type='currency']", function () { formatCurrency($(this), "blur"); }); function currencyNumber(n) { // format number 1000000 to 1,234,567 // return n.replace(/D/g, "").replace(/B(?=(d{3}) (?!d))/g, ",") // format number 1000000 to 12,34,567 return n.replace(/D/g, "").replace(/(d ?)(?=(dd) (d)(?!d))(.d )?/g, "$1,"); } function formatCurrency(input, blur) { var input_val = input.val(); if (input_val === "") { return; } var original_len = input_val.length; var caret_pos = input.prop("selectionStart"); if (input_val.indexOf(".") {amp}gt;= 0) { var decimal_pos = input_val.indexOf("."); var left_side = input_val.substring(0, decimal_pos); var right_side = input_val.substring(decimal_pos); left_side = currencyNumber(left_side); right_side = currencyNumber(right_side); if (blur === "blur") { right_side  = "00"; } right_side = right_side.substring(0, 2); input_val = left_side   "."   right_side; } else { input_val = currencyNumber(input_val); input_val = input_val; if (blur === "blur") { input_val  = ".00"; } } input.val(input_val); var updated_len = input_val.length; caret_pos = updated_len - original_len   caret_pos; input[0].setSelectionRange(caret_pos, caret_pos); } 

Индийская валюта RegEx

 /^(d{1,2})(,d{2})*(,d{1,3}){1}(.d{1,})?$/g 

Валюта США RegEx

 /^(d{1,3})(,d{3})*(.d{1,})?$/g 

Индийская конвертация номеров валют RegExp

 $(this).val(parseFloat($(this).val(), 10).toFixed(2).replace(/(d ?)(?=(dd) (d)(?!d))(.d )?/g, "$1,").toString()); 

Преобразование номеров в иностранной валюте RegExp

 $(this).val(parseFloat($(this).val(), 10).toFixed(2).replace(/(d)(?=(d{3}) .)/g, "$1,").toString());