我有一个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/