22-22222-2222
22222222222
(22) 22222 2222
(22)-22222-2222
22 22222 2222
(22)222222222
。因此,它只能接受数字、空格、破折号和括号。如有任何建议,将不胜感激!22-22222-2222
22222222222
(22) 22222 2222
(22)-22222-2222
22 22222 2222
(22)222222222
。因此,它只能接受数字、空格、破折号和括号。如有任何建议,将不胜感激!我刚刚制作了一个适用于巴西号码的有效正则表达式:
^\s*(\d{2}|\d{0})[-. ]?(\d{5}|\d{4})[-. ]?(\d{4})[-. ]?\s*$
请查看在https://regex101.com/r/safMl7/2的验证。
由于我们知道号码来自巴西: +55,因此不会获取国家代码。
以下示例可以正常工作,无论是否有空格和破折号:
正则表达式的每个组都将被正确分组为巴西格式。
参见此示例:62 98345 1234
使用JavaScript实现巴西电话号码的掩码
11位数字格式的正则表达式:/(\d{2})(\d{1})(\d{4})(\d{4})/, "($1) $2 $3-$4
63991017575
(63) 9 9101-7575
var number = '63992017738';
number = number.toString().replace(/(\d{2})(\d{1})(\d{4})(\d{4})/, "($1) $2 $3-$4")
结果:(63) 9 9201-7738
var number = '63992017738';
number = number.toString().replace(/(\d{2})(\d{1})(\d{4})(\d{4})/, "$1 $2 $3-$4")
结果:63 9 9101-7575
//if you need this: +55 (63) 9 9201-7131
var number = '5563992017131';
number = number.toString().replace(/(\d{2})(\d{2})(\d{1})(\d{4})(\d{4})/, "+$1 ($2) $3 $4-$5")
结果:+55(63)9 9201-7131
如果你总是有区号(DDD),可以尝试使用Frederiko的正则表达式的简化版本。
^(\d{2})\D*(\d{5}|\d{4})\D*(\d{4})$
请查看https://regex101.com/r/M1DrBo上的内容。
这是什么意思:\(?\d{2,}\)?[ -]?\d{4,}[\-\s]?\d{4}
下面使用正则表达式似乎可以捕获巴西电话号码最常见的20种写法,包括固定电话和移动电话。
(\b\(\d{2}\)\s?[9]?\s?\d{4}(\-|\s)?\d\d{4})|(\b\d{2}\s?[9]?\s?\d{4}(\-|\s)?\d{4})|(\b([9]|[9]\s)?\d{4}(\-|\s)?\d{4})|(\b\d{4}(\-|\s)?\d{4})
有四个“或”选项来匹配数字。它从更复杂的选项(带括号和DDD代码)到最简单的选项(即八位电话号码)。
我在每种情况的前面而不是后面添加了\b
,因为有时您可以捕获人们写一个数字后跟一些描述的情况:“99000-1100word”。您可以根据需要删除单词边界:
(\(\d{2}\)\s?[9]?\s?\d{4}(\-|\s)?\d\d{4})|(\d{2}\s?[9]?\s?\d{4}(\-|\s)?\d{4})|(([9]|[9]\s)?\d{4}(\-|\s)?\d{4})|(\d{4}(\-|\s)?\d{4})
这是更简单的正则表达式
10位数字格式的正则表达式:(\d{2})(\d{4})(\d{4})
11位数字格式的正则表达式:(\d{2})(\d{5})(\d{4})
因此,您可以编写一个函数来使用正则表达式进行替换:
export function phoneFormatter10(phone) {
phone = phone.replace(/[^\d]/g, ""); //remove all non digits
return phone.replace(/(\d{2})(\d{4})(\d{4})/, "($1)$2-$3");
}
export function phoneFormatter11(phone) {
phone = phone.replace(/[^\d]/g, ""); //remove all non digits
return phone.replace(/(\d{2})(\d{5})(\d{4})/, "($1)$2-$3");
}
使用示例:
phoneFormatter10('3499883424')
result: '(34)9988-3424'
phoneFormatter11('3499^883*4-244') //even with badly formatted string
result: '(34)99883-4244'
我的答案是使用Jquery掩码插件。它正是我所需要的,并且具有更多的功能。
$(document).ready(function () { $('.input-telephone').mask('(99) 9999-9999?9'); });
\(?\d{2,}\)?[ -]?\d{4,}[\-\s]?\d{4}
,同时检查你的Javascript是否在某些事件中持续检查格式,例如在<input onchange="yourcheck_function()">
或者input.oninput = function(){}
。 - BladeMight