我正在尝试创建一个从电话号码字段中删除某些字符的功能。到目前为止,我已经删除了(321) 321-4321
中的括号,空格和连字符。另外,我删除了321.321.4321
中的点。最后,我已经验证了11位数字,并且即使用标点符号也从1开始。
我输入的代码:
function phoneNumber(){
var number = '(321) 321-4321';
number = number.replace(/[^\d]/g, '');
return number;
}
我现在试图让它在某些情况下返回null
,例如:
2-9
开头时2-9
开头时。任何添加语句的尝试都会使我的原始函数无效。任何人都可以帮助我我是regex的新手,但我需要帮助吗?
如果我理解正确,你想:
2-9
范围内(所以不是0或1)第一个正则表达式可以使用\D
而不是[^\d]
,因为它们都意味着完全相同的东西。
第二部分可以使用以下任何一种方法(以及更多,但这些可能是一些最简单的方法):
/^[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));
});
!/[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));
});
尝试如下使用.length来获取字符串中的字符
var number = '(321) 321-4321';
number = number.replace(/[^\d]/g, '');
console.log(number)
if (number.length > 11) {
console.log("null");
} else {
console.log(number.length);
}
if (number.match(/[a-z]/i)) {
console.log("alphabet letters found");
} else {
console.log("alphabet letters not found");
}