繁体   English   中英

正则表达式仅接受正数和小数(仅以0.5 .0或整数接受)

[英]Regular Expression to accept only positive number and decimals (only end with .5 .0 or integer accepted)

我需要JavaScript中的正则表达式,该表达式只接受以.5或.0结尾的正数和小数。

(^\d*\.?\d*[1-9]+\d*$)|(^[1-9]+\d*\.\d*$)

这就是我所拥有的,但是我不知道如何更改它以拒绝0和0.0,并拒绝以.1 .2 .3 .4 .6 .7 .8 .9结尾的那些

Accept:
0.5
1.0
1.5
2.0
2.5
3.0
1
2
3
4

Reject:
-1.0
-0.5
-0.0
-0.1
-0.7
0
0.0
0.1
0.9
0.4
1.3
1.11
1.51
2.01

将数字乘以2,看是否为整数:

 function check(v) { return v > 0 && !(v*2 % 1); } var tests = [ 0.5, 1.0, 1.5, 2.0, 2.5, 3.0, 1, 2, 3, 4, -1.0, -0.5, -0.0, -0.1, -0.7, 0.0, 0.1, 0.9, 0.4, 1.3, 1.11, 1.51, 2.01]; tests.forEach(v => console.log(v, check(v) ? "passes": "fails")); 

您可以在regex101上进行检查。 我用来执行此操作的正则表达式是:

(^0\.5$)|(^[1-9][0-9]*(\.[05])?$)

蓝色突出显示的是匹配项。

以下正则表达式如何: ^\\d*\\.\\d{0,}(0|5)

这里是解释:

^         //line start
\d*       //any number (or none) occurrences of any number
\.        //decimal dot
\d{0,}    //0 or more digits (actually the same as * - you can use it here too)
(0|5)     //ends with 0 or 5

试试吧 :

<html>
    <head>
    </head>
    <body>
        <script>
            var patt = /^(\+)?\d+(\.[05])?$/;
            var number = 1.5;
            if (number > 0 && patt.test(number))
                alert("Number is valid");
            else
                alert("Number is Invalid");
        </script>
     </body>
</html>

暂无
暂无

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

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