我需要一个正则表达式来验证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})$/
任何人都可以微调这个正则表达式
答案 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 强>
答案 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+/, '');
然后使用上面的正则表达式。