javascript - 使用正则表达式验证电话号码不起作用

标签 javascript regex validation dojo

我有一个function它验证用户使用正则表达式输入的电话号码。然而,即使regexp是正确的,它似乎也没有评估true。我不确定我做错了什么。

HTML

<body class="claro">
    <form id="myform" data-dojo-type="dijit/form/Form">

    <input
    data-dojo-type="dijit/form/ValidationTextBox"
        data-dojo-props="
            required: true,
            invalidMessage: 'Invalid Phone Number !',
            missingMessage: 'Phone Number Required !'"
        id="phone" title="Phone Number"
    placeholder="Your Phone Number"
  onkeydown="validatePhoneNumberFormat()"/>

    </form>
</body>

Javascript

  //test phone number 188-123-1234
    function validatePhoneNumberFormat(){
     var phoneNumber = dijit.byId("phone");
        var phoneFormat = new RegExp('^[0-9]\d{2}-\d{3}-\d{4}$');
        phoneNumber.validator = function(value){
          console.log(value);
          console.log(phoneFormat.test(value.trim()));
          return phoneFormat.test(value.trim());

        }

    } 

最佳答案

您需要在 RegExp 构造函数中双重转义 \d,因此请使用:

var phoneFormat = new RegExp('^\\d{3}-\\d{3}-\\d{4}$');

或者使用正则表达式文字:

var phoneFormat = /^\d{3}-\d{3}-\d{4}$/;

由于 RegExp 将字符串作为参数,因此您需要对所有特殊元字符进行双重转义,因为第一个转义用于字符串,第二个转义用于正则表达式引擎。

关于javascript - 使用正则表达式验证电话号码不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23526120/

相关文章:

javascript - 如何在单击时打开 tr 内的表 tr

javascript - 我的 Controller [AngularJs] 出错

javascript - jquery 如何给帖子添加评论

python - 如何通过python删除大括号包围的 block

javascript - 我可以制作一个共享的reactjs验证组件吗?

Spring 验证绑定(bind)到 Controller 方法中集合的 RequestBody 参数

JavaScript 缺少分号?

r - 如何分隔字符值以在矩阵中除以正则表达式

正则表达式删除一行中第一个空格出现之前的所有内容?

javascript - 使用javascript动态生成数独棋盘表