zoukankan      html  css  js  c++  java
  • 求教一个javascript正则的怪问题

    javascript在做正则匹配的时候,有两个语法

    直接量语法

    /pattern/attributes

    创建 RegExp 对象的语法

    new RegExp(pattern, attributes);


    两种方式应该说都是一样的,但是我今天却发现了一个问题,求教各位。请看如下情况:

    我需要写一个正则来匹配固定电话的格式,用两种不同的语法代码如下:

    /**
    *校验字符串是否是带区号的固定电话格式,使用创建RegExp对象的语法的验证
    */
    function checkTelNumber(str)
    {
        var regExp = new RegExp("^(\d{3,4})-(\d{7,8})$");
        if(regExp .test(str)) 
            return true; 
        else
            return false;
    }

    另外一种写法

    /**
    *校验字符串是否是带区号的固定电话格式,使用直接量语法格式的验证
    */
    function checkTelNumber(str)
    {
        if(/^(\d{3,4})-(\d{7,8})$/.test(str)) 
            return true; 
        else
            return false;
    }

    这两个方法,本应该是相同的,可是运行的结果却不一样。如下,直接调用查看返回的结果。

    alert(checkTelNumber("0511-4405222"));

    如果是使用创建RegExp对象的语法的验证的方法,返回的都是false,如果改用创建 RegExp 对象的语法,则返回的结果就是true了。这个事最令我不解的地方了。虽然说在使用中我们可以选择正确结果的一种方法就好了,但是我还是求根问题,想求教一下各位朋友,原因所在,也为有类似问题的朋友寻找一个解决的方法。

  • 相关阅读:
    一个小厂算法工程师的2021个人年终总结
    优达学城 UdaCity 纳米学位
    Eclipse 常用可视化开发插件
    Android创建文件夹和文件
    Windows Mobile 播放声音文件
    C++实现顺序栈类
    c++实现的图类
    常见的字符串操作
    常见的链表操作
    取余数法实现哈希表(包括开放定址法和链地址法解决冲突)
  • 原文地址:https://www.cnblogs.com/lynnlin/p/2461712.html
Copyright © 2011-2022 走看看