正则表达式

来源:互联网 发布:13.3寸mac玩cf分辨率 编辑:程序博客网 时间:2024/06/18 10:56

有使用前需求javascript正则表达式匹配小数类型,后来,他们已经写是不完全正确的识别。

后来在网上找了很多,甚至包含一些老外的纯英文论坛什么的。发现都是错的。都不够全面。

常见错误:

1.   /^-?\d+\.\d+$/   http://blog.csdn.net/xxd851116/article/details/4352011

随便一看就知道,假设前面带+则错误。假设没有小数点则错误,假设00.123也不错报等等

2./^[0-9]*[.][0-9]+$/ http://social.msdn.microsoft.com/Forums/en-US/1ffd9265-eafa-4897-b803-39194f35df5d/regular-expression-for-a-float-in-javascript?forum=jscript

与上一个差点儿相同

3. /^\d*+(\.\d+)?

$/与上一个同一个页面

看起来有水平了很多,比方考虑到小数点及小数点后的内容可有可没有(即整数也能够,不不过纯小数)

可是小数点前,00.123 也是能够的

不行。

4. /^[+-]?

\d+(\.\d+)?$/

也是更好了,比方考虑到了前面的正负号。等。可是相同的小数点前。00.123 也是能够的


不找很多其它了,大概也就是这样。

-----------

以下是我測试多次的一个写法:

var regExp = /^[+-]?(0|([1-9]\d*))(\.\d+)?$/g;var b = regExp.test(a);alert(b);


解释:

^$分别匹配字符串的首尾

[+-]? 表示字符串开头能够有 +或-或没有符号,且有的话仅仅能有一个

0|[1-9]\d* 这是小数点前的整数部分,表示能够为 (一个0 )  或者 (为一个第一位不为0的整数,但第一位以后能够为0)

(\.\d+)? 是指小数点及小数点后面部分,不出现或出现一次

g所有匹配,(好像没必要的)

因此。完美匹配小数类型。


总结:

1.页面:

实数(整数和小数):/^[+-]?(0|([1-9]\d*))(\.\d+)?$/g

百分号的正则:/^([+-]?(0|([1-9]\d*))(\.\d+)?)%$0$/;

2.java后台程序:

实数或百分数:(^([+-]?(0|([1-9]\\d*))(\\.\\d+)?))[%]?

原创粉丝点击