在Javascript中使用Regex格式化电话号码

时间:2014-08-11 15:59:27

标签: javascript regex pdf adobe acrobat

我正在Adobe Acrobat Pro中创建PDF表单,并希望使用javascript格式化电话号码,以便在区号之后包含空格,并在前缀后添加连字符。我希望允许用户在10位电话号码后输入分机号码和其他相关信息。

以下是一些如何格式化电话号码的示例:

Number Entered        Formatted Version
2125551212            212 555-1212
(212) 555 1212        212 555-1212
212-555-1212 ext. 101 212 555-1212 ext. 101
212 555 1212 x101     212 555-1212 x101

下面的代码应首先删除任何空格,连字符和其他非数字或字母的字符。这部分似乎工作正常,但代码的重新格式化部分无法正常工作。当用户添加扩展名时,格式化完全关闭。例如,212 5551212 ext 339变为212 5-5--1212 ext339。

{
f_val = event.value.replace(/\D\W[^\.]/g, "");
event.value = f_val.slice(0,3)+" "+f_val.slice(3,6)+"-"+f_val.slice(6);
}

非常感谢任何想法或建议。

(请注意,我知道此代码无法验证,目前不希望它这样做。)

1 个答案:

答案 0 :(得分:2)

如果您的示例中的所有电话号码总是如此,则可以使用单个替换:

var re = /\(?(\d{3})\)?[- ]?(\d{3})[- ]?(\d{4})/g; 
var subst = '$1 $2-$3'; 

var result = str.replace(re, subst);