• 求教一个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了。这个事最令我不解的地方了。虽然说在使用中我们可以选择正确结果的一种方法就好了,但是我还是求根问题,想求教一下各位朋友,原因所在,也为有类似问题的朋友寻找一个解决的方法。

  • 相关阅读:
    韩式英语
    Daily dictation 听课笔记
    words with same pronunciation
    you will need to restart eclipse for the changes to take effect. would you like to restart now?
    glottal stop(britain fountain mountain)
    education 的发音
    第一次用Matlab 的lamada语句
    SVN的switch命令
    String的split
    SVN模型仓库中的资源从一个地方移动到另一个地方的办法(很久才解决)
  • 原文地址:https://www.cnblogs.com/lynnlin/p/2461712.html
Copyright © 2020-2023  润新知