gpt4 book ai didi

JavaScript 正则表达式使用 n 个任意字符格式化手机以进行扩展

转载 作者:太空宇宙 更新时间:2023-11-04 16:12:56 24 4
gpt4 key购买 nike

我在 JavaScript 中有以下函数,它接收美国电话号码的文本,对其进行测试以确保没有输入任何无效内容,然后将其格式化以在同一文本框中显示。

它运行良好,但它还需要接受电话分机。电话分机基本上需要按原样传递,因此它可以是任意数量的任意字符,无论是以空格、*、分机开头,无论是什么情况。我被要求不要担心所有这些情况,正如我所说,让延期通过。我告诉我的老板,我们可以为扩展程序提供另一个文本框,但这不是他想要的。

因此,编写 n 个任意字符的正则表达式并不困难,我更关心的部分是如何在实际进行电话号码格式化的代码中获取这些字符。

我想我可以抓取有效电话号码后面的字符,但老实说,我不确定如何执行此操作,请记住电话号码是经过正则表达式检查的,并且输入可能具有不同的长度。有什么想法吗?

如果有任何帮助,我将不胜感激!这是当前的代码,需要对其进行调整,以便在格式化电话号码时接受和返回扩展名,请记住扩展名可以是任意数量的任意字符的要求:

function formatPhone(phoneObj) {
var phoneStr = phoneObj.value,
s2 = (""+phoneStr).replace(/\D/g, ''),
m = s2.match(/^(\d{3})?[- ]??[\s]?(\d{3})?[\s]?(\d{4})$/);
phoneObj.value = (!m) ? null : "(" + m[1] + ") " + m[2] + "-" + m[3];
}

最佳答案

首先,您可以将字符串转换为小写,或者使正则表达式不区分大小写,这样您就不必处理大小写差异。

可能还有其他方法来解析电话号码,但使用给定的正则表达式,您可以进行如下更改:

^(\d{3})?[- ]??[\s]?(\d{3})?[\s]?(\d{4})(\s+(ext|\*)?\s*\d{4})?$

这里我假设ext*前后有一个空格。希望这能给您带来想法,并且您可以改进它以满足您的要求。

另请检查以下答案:

关于JavaScript 正则表达式使用 n 个任意字符格式化手机以进行扩展,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41323674/

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