2013-04-11 134 views
-5

我想验证一个价格域:正则表达式,用于验证PRICE

不应该允许

  • 空格
  • 字母
  • 负值

应该允许

  • 数字
  • 逗号
  • 小数
+1

[到底什么,你试过吗?(http://whathaveyoutried.com) – 2013-04-11 21:07:45

回答

3

此正则表达式应该这样做:

^[\d\.,]+$

编辑:

这是一个更好的正则表达式,允许更理智的数字格式(美元)。仍然不完美 - 如果不是那么完美,需要确切地知道你期望的验证。

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

+6

真棒!我想',,,,,,,,'美元,请。 – 2013-04-11 21:08:57

+0

试过这个 - ^(\ d *)(\,| \。(\ d *))?$ - 但不能正常工作我想要如何 – user1022521 2013-04-11 21:09:56

+4

@JackManey哈哈哈,但技术上它遵循“应该允许数字,逗号和小数” – Ian 2013-04-11 21:10:08

2

这是最简单的只包括你想要的东西,并排除一切。它看起来像你想要的数字,逗号和句点。这个正则表达式看起来像/^[\d.,]+$/。这没有指定格式的任何顺序。如果您希望逗号只出现在3位数字的组中(例如国际化程度不高,但适用于美国),则需要更多的信息,例如/^\d{,3}(,\d{3})*(\.\d+)?$/ - 0-3位数字,然后是0个或更多组'',NNN'与一个可选的'.N')。

如果你想单独检测你想避免的事情,你可以使用像/[-A-z \t]/ - 短划线,字母(上下),空格或制表符。

6

正则表达式来验证价格字段:

/^(\d*([.,](?=\d{3}))?\d+)+((?!\2)[.,]\d\d)?$/ 

解释演示:http://regex101.com/r/uG5lI0/1

Javascript代码来验证:

/^(\d*([.,](?=\d{3}))?\d+)+((?!\2)[.,]\d\d)?$/.test(input) 

将验证只有在正确的格式,用点或逗号他们各自的地方。

国际格式en_US区域设置&美国国家格式:

  • 134.56
  • 1,234.56
  • 2991234。00

意大利国家队格式2位小数:

  • 134,56
  • 21.234,56
  • 1.234,56
  • 9.321.234,56

国际格式为de_DE区域设置:

  • 134,56
  • 1234,56
  • 98281234,56

小数是可选的,验证了整个金额:

  • 1,234
  • 1.234
  • 9.321.234

function validatePrice(input) { 
 
    return /^(\d*([.,](?=\d{3}))?\d+)+((?!\2)[.,]\d\d)?$/.test(input); 
 
} 
 

 
['WRONG', 
 
    '1,234,56', 
 
    '1.234.56', 
 
    '-1993', 
 
    '918,27.63', 
 
    '122.42.24', 
 
    '1,89,2', 
 
    '', 
 
    'Intl. format & US national format', 
 
    '2.56', 
 
    '14.56', 
 
    '134.56', 
 
    '1,234.56', 
 
    '2,991,234.00', 
 
    '', 
 
    'Italian national format with 2 decimals', 
 
    '9,56', 
 
    '24,56', 
 
    '134,56', 
 
    '721.234,56', 
 
    '21.234,56', 
 
    '1.234,56', 
 
    '9.321.234,56', 
 
    '69.321.234,56', 
 
    '269.321.234,56', 
 
    '1.269.321.234,56', 
 
    'International format for the de_DE locale', 
 
    '1,56', 
 
    '14,56', 
 
    '134,56', 
 
    '1234,56', 
 
    '98281234,56', 
 
    'No cents', 
 
    '1', 
 
    '14', 
 
    '134', 
 
    '1,234', 
 
    '2,991,234', 
 
    '9', 
 
    '24', 
 
    '134', 
 
    '1.234', 
 
    '9.321.234', 
 
    '1', 
 
    '14', 
 
    '134', 
 
    '1234', 
 
    '98281234' 
 
].forEach(function(n) { 
 
    document.getElementById('results').innerHTML += "'" + n + "' => " + validatePrice(n) + "<br>"; 
 
})
<div id="results"></div>

+0

0000000或000001怎么办? – 2016-05-14 10:31:51