zoukankan      html  css  js  c++  java
  • 如何匹配 $.49?

    《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个数值。见下图。

  • 相关阅读:
    MVC身份验证及权限管理
    EasyPR--开发详解
    ASP.NET 安全认证
    将Excel导入到数据中
    ExtJS 4 树
    ExtJS 4 表单
    ExtJS 4 Grids 详解
    ExtJS 4 类系统
    第4章 类型基础 -- 4.1 所有类型都从System.Object派生
    随滚动条浮动的链接块层
  • 原文地址:https://www.cnblogs.com/sx00xs/p/12677190.html
Copyright © 2011-2022 走看看