Javascript字符串操作-电话号码验证



EDIT:不允许为此使用正则表达式!

我的任务是通过javascript中的字符串操作来验证4种不同类型的电话号码。我必须能够把最后的电话号码打印成一张"收据",因为这是一张HTML格式的披萨摄入量表格。

我有所有的代码工作减去这个验证。以下是我需要验证的电话号码类型:1.ddd ddd2.dddddddddd3.(ddd(ddddddd4.(ddd(ddd ddd

如果号码不是所需的格式,我也必须提供警报

欢迎来到堆栈溢出!虽然您没有任何代码,但我相信我可能会提供帮助。实现这一点的最佳方法是使用正则表达式。一个例子:

var phoneRegex = /^(+?( |-|.)?d{1,2}( |-|.)?)?((?d{3})?|d{3})( |-|.)?(d{3}( |-|.)?d{4})$/gi;
function testPhoneNum(possibleNumber) {
return phoneRegex.test(possibleNumber);
}
console.log(testPhoneNum('123-456-7890'))
console.log(testPhoneNum('heck no'))

当然,这个正则表达式不适用于所有的电话号码,您必须为自己的用例编写自己的正则表达式。这只是一个让你开始的例子。

你可以试试这个伴侣

^(?d{3})?-?d{3}-?d{4}$

演示

解释

  • ^-锚定到字符串的开头
  • (?d{3})?-?这将匹配(3位数字(、(3位号码(-、3位号码
  • d{3}-?-这将匹配3位数字,后面跟着-的3位数字
  • d{4}-这将匹配任何4位数字
  • $-锚定到字符串的末尾

示例

const regex = /^(?d{3})?-?d{3}-?d{4}$/gm;
const str = `999-999-9999
(123)123-1454
1234567890
(123)1231234
a122-123-1234
(123)-123-12345
(123)-(123)-(1234)`;
let m;
while ((m = regex.exec(str)) !== null) {
// This is necessary to avoid infinite loops with zero-width matches
if (m.index === regex.lastIndex) {
regex.lastIndex++;
}

// The result can be accessed through the `m`-variable.
m.forEach((match, groupIndex) => {
console.log(`Found match, group ${groupIndex}: ${match}`);
});
}

这只是一个演示代码,但当您只有4种类型的格式时,就可以做到这一点。

  1. 首先删除()-,并检查字符串是否只有数字
  2. 然后再次检查原始字符串中短划线和括号的索引

let p1 = '123-456-7887';
let p2 = '1233333333';
let p3 = '(123)7878777';
let p4 = '(123)456-7887';
let p5 = '(123456-7887';
let p6 = '(123-456-7887';
const validatePhone = (str) => {
const withoutDash = str.replace(/[s()-]+/gi, "");
const firstP = str.indexOf('(');
const lastP = str.lastIndexOf(')');
const firstD = str.indexOf('-');
const lastD = str.lastIndexOf('-');

console.log(withoutDash);
const onlyNumber = /^d+$/.test(withoutDash);
let valid = false;
if (onlyNumber) {
if (firstP === 0 && lastP === 4) {
valid = true;
if(firstD === 8 && lastD === 8 ) {
valid = true;
}
} else if( firstD === 3 && lastD === 7) {
valid = true;
} 
} else {
valid = false;
}
return valid;
};
const isValid = validatePhone(p1);
console.log({isValid});

最新更新