用于自定义验证的JavaScript正则表达式

时间:2015-09-29 10:51:23

标签: javascript regex

我需要一个正则表达式来验证JavaScript中的字符串/小数。

最多9个元素长,2位小数

简单地

123 - valid
123456789 - valid
1234567896 - invalid ( max 10 chars )

123. - invalid
123.2 - valid
123.32 valid
123.324 invalid ( 3 decimal points )

所以我写了一个像这样的正则表达式

/^([0-9]{1,9})+[.]+([0-9]{0,2})$/

任何人都可以微调这个正则表达式

4 个答案:

答案 0 :(得分:2)

尝试以下内容:

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

答案 1 :(得分:2)

您可以使用正则表达式^(?=.{0,10}$)\d{0,9}(\.\d{1,2})?$

$('input').on('input', function() {
  $(this).css('color', this.value.match(/^(?=.{0,10}$)\d{0,9}(\.\d{1,2})?$/) ? 'green' : 'red');
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<input type=text/>

<强> Regex explanation here

Regular expression visualization

答案 2 :(得分:1)

这样的东西?

/^[0-9]{1,9}(\.[0-9]{0,2})?$/

答案 3 :(得分:1)

您可以在开头使用否定前瞻,将长度限制应用于整个匹配

^(?!\S{10})\d+(?:\.\d{1,2})?$

请参阅regex demo

  • ^ - 字符串开头
  • (?!\S{10}) - 从开始到结束条件不超过9个非空白字符
  • \d+ - 一位或多位
  • (?:\.\d{1,2})? - 1个或0个. + 1或w2位数组
  • $ - 字符串结尾

但是,您也可以将浮点/整数与^\d+(?:\.\d{1,2})?$匹配,然后检查匹配文本的长度以确定它是否有效。

请注意,如果您必须省略前导零,则需要先删除它们:

s = s.replace(/^0+/, '');

然后使用上面的正则表达式。