繁体   English   中英

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

[英]JavaScript regex for custom validation

我需要一个正则表达式来验证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})$/

任何人都可以微调此正则表达式吗

尝试以下操作:

^\d{1,9}(\.\d{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/> 

正则表达式的解释在这里

正则表达式可视化

像这样吗

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

您可以在开始时使用负数前瞻,以将长度限制应用于整个比赛

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

正则表达式演示

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

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM