gpt4 book ai didi

javascript - 使用 Javascript 的正则表达式

转载 作者:行者123 更新时间:2023-11-29 10:30:19 24 4
gpt4 key购买 nike

我正在尝试创建一个函数,用于从电话号码字段中删除某些字符。到目前为止,我已经删除了 (321) 321-4321 中的括号、空格和连字符。此外,我删除了 321.321.4321 中的点。最后,我已经验证了 11 位数字和从 1 开始,即使有标点符号。

我输入的代码:

function phoneNumber(){
var number = '(321) 321-4321';
number = number.replace(/[^\d]/g, '');
return number;
}

我现在试图让它在某些情况下返回 null,例如:

  • 当号码超过11位时
  • 出现字母和/或标点符号时
  • 当区号不是以2-9开头时
  • 当兑换码不是以2-9开头时。

任何添加语句的尝试都会使我的原始功能无效。谁能帮助我我是正则表达式的新手,但我需要帮助?

最佳答案

简介

如果我没理解错的话,你想要:

  • 从字符串中删除任何非数字字符
  • 获取长度为 11 位数字(或更少)的数字
  • 确保数字中的第一位和第四位数字在 2-9 范围内(因此不是 0 或 1)

代码

第一个正则表达式可以使用 \D 而不是 [^\d] 因为它们的意思完全相同。

第二部分可以使用以下任何一种方法(还有更多,但这些可能是最简单的一些方法):

正则表达式和.length

/^[2-9]\d{2}[2-9]/.test(number) && number.length <= 11

var numbers = [
'(321) 321-4321',
'321.321.4321',
'123.456.7890',
'321.123.4567',
'(321) 321-4321-321'
];

function phoneNumber(number){
number = number.replace(/\D/g, '');
if(/^[2-9]\d{2}[2-9]/.test(number) && number.length <= 11) {
return number;
}
return null;
}

numbers.forEach(function(number){
console.log(phoneNumber(number));
});

charAt、正则表达式和长度

!/[01]/.test(number.charAt(0)) && !/[01]/.test(number.charAt(3)) && number.length <= 11

var numbers = [
'(321) 321-4321',
'321.321.4321',
'123.456.7890',
'321.123.4567',
'(321) 321-4321-321'
];

function phoneNumber(number){
number = number.replace(/\D/g, '');
if(!/[01]/.test(number.charAt(0)) && !/[01]/.test(number.charAt(3)) && number.length <= 11) {
return number;
}
return null;
}

numbers.forEach(function(number){
console.log(phoneNumber(number));
});

正则表达式(单独)

显然,您会将 0 更改为您的最小 位数要求(负 4);所以如果你想要最小 9,你可以输入 {5,7}

/^[2-9]\d\d[2-9]\d{0,7}$/.test(number)

var numbers = [
'(321) 321-4321',
'321.321.4321',
'123.456.7890',
'321.123.4567',
'(321) 321-4321-321'
];

function phoneNumber(number){
number = number.replace(/\D/g, '');
if(/^[2-9]\d\d[2-9]\d{0,7}$/.test(number)) {
return number;
}
return null;
}

numbers.forEach(function(number){
console.log(phoneNumber(number));
});

关于javascript - 使用 Javascript 的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47890862/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com