- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试验证我的表单。我的表单中有一个电话号码字段。用户插入电话号码,然后进行验证和格式化。我在 StackOverflow 上阅读了很多其他类似的问题,并通过其他地方的搜索,但我被困住了。表单一直提示我插入的有效数字无效。
我只关心 NANP 号码,并且我了解 NANP 号码的格式如下:NXX-NXX-XXXX,其中 N 只能是数字 [2-9]
,X 可以为[0-9]
。我不需要国家/地区代码。
这是我的代码:
function validatePhone(){
var error = 1;
var hasError = false;
var $this = $(this);
var regex1 = /^(\()?[2-9]{1}\d{2}(\))?(-|\s)?[2-9]{1}\d{2}(-|\s)\d{4}$/;
phone = $(this).val();
phone = phone.replace(/[^0-9]/g,'');
if(!regex1.test(phone)){
hasError = true;
$this.css('background-color','#FFEDEF');
}
else{
area = phone.substring(0,3);
prefix = phone.substring(3,6);
line = phone.substring(6);
$this.val('(' + area + ') ' + prefix + '-' + line);
$this.css('background-color','#FFFFFF');
}
这个想法是,无论我是否插入 8012559553、(801)2559553、(801)255-9553、801-255-9553 或类似的内容,它都会被验证和格式化,如下所示:(801) 255-9553 。但同样,由于某种原因,表单继续说我插入的任何数字都是无效的,无论它是否有效。这是我正在使用的代码,它可以工作,但不符合 NANP 格式:
function validatePhone(){
var error = 1;
var hasError = false;
var $this = $(this);
phone = $(this).val();
phone = phone.replace(/[^0-9]/g,'');
if(phone.length != 10){
hasError = true;
$this.css('background-color','#FFEDEF');
}
else{
area = phone.substring(0,3);
prefix = phone.substring(3,6);
line = phone.substring(6);
$this.val('(' + area + ') ' + prefix + '-' + line);
$this.css('background-color','#FFFFFF');
}
所以,我在实现数字的正则表达式测试以确保数字是真实的,然后正确设置数字格式时遇到了麻烦......有什么想法吗?
最佳答案
这是我的不是很严格但很好的正则表达式:
/^\D*([2-9]\d{2}\D*){2}(\d{2}\D*){2}\D*$/
它接受:
它不接受:
关于NANP 电话号码的 jQuery 验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6915650/
我有存储 NANP(北美编号计划)号码的要求。这意味着我不在乎也不需要为国际号码操心。 编号计划是这样的:NPA-NXX-XXXX 我会过滤并去除多余的空格或破折号 (-) 以生成 10 位数字的正确
我正在尝试验证我的表单。我的表单中有一个电话号码字段。用户插入电话号码,然后进行验证和格式化。我在 StackOverflow 上阅读了很多其他类似的问题,并通过其他地方的搜索,但我被困住了。表单一直
我是一名优秀的程序员,十分优秀!