首页 > 其他 > 详细

如何匹配 $.49?

时间:2020-04-11 01:17:21      阅读:64      评论:0      收藏:0      [点我收藏+]

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

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

为更准确的理解这段正则的含义,特意找出《精通正则表达式》一书,重温了起来。

《精通。。。》一书 p24举了个例子,如何匹配美元金额,答案是:

\$[0-9]+(\.[0-9][0-9])?

作者提及,此表达式无法匹配 $.49,答案在p194揭晓了,既使用分支选项。

不过我在使用 egrep 尝试此例子时,却遇到了奇异现象,

1)单独使用 

\$[0-9]+(\.[0-9][0-9])?

可匹配 $19.9 和 $22,不能匹配 $.49

2)单独使用

\$\.[0-9]+

可匹配 $.49,不能匹配 $19.9 和 $22

3)合并使用前两者,则无法同时匹配这3个数值,仔细研究后,发现是在使用匹配任意子表达式时,符号 | 的前后有空格,导致的出错,去掉空格,则可成功匹配3个数值。见下图。

技术分享图片

 

如何匹配 $.49?

原文:https://www.cnblogs.com/sx00xs/p/12677190.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!