《Vue.js》p102案例中的正则表达式的解析

《Vue.js实战》 一书 p102 有一个判断参数值是否为数值的正则表达式,援引如下:

function isValueNumber(value) {
            return (/(^-?[0-9]+\.{1}\d+$)|(^-?[1-9][0-9]*$)|(^-?0{1}$)/).test(value + '');
        }

试解析如下:

1)表达式中有 3 个子表达式

2)第一个子表达式 

^-?[0-9]+\.{1}\d+$

起始的脱子符^表示匹配的条件是行的开头。

结尾处的 $符号表示匹配的行末尾。

-?,表示匹配0到1个 -。

字符组[0-9]+,表示 匹配0至9中的任意一个数字,后面的+号,表示匹配1个或无数个数字。

\.,表示转义 . 符号,匹配一个 .。

后面的{1},表示匹配.的数量为1。

\d,表示匹配一个数字,后面的+号,表示匹配1个或无数个数字。

2)第二个子表达式

^-?[1-9][0-9]*$

首尾的^$含义同上。

-?表示匹配0到1个 -。

[1-9]匹配1到9中的任意一个数值。

[0-9]匹配0至9中的任意一个数值。后缀*号,表示匹配数量为0到任意个。

3)第三个表达式

^-?0{1}$

表示匹配一个 - 符号。

后跟一个0,数量为1。

posted @ 2020-04-11 00:30  sx00xs  阅读(299)  评论(0编辑  收藏  举报