【问题标题】:Formatting phone number with Regex in Javascript在 Javascript 中使用正则表达式格式化电话号码
【发布时间】:2014-10-04 12:43:01
【问题描述】:

我正在 Adob​​e 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 分机 339 变为 212 5-5--1212 分机 339。

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

任何想法或建议将不胜感激。

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

【问题讨论】:

    标签: javascript regex pdf adobe acrobat


    【解决方案1】:

    如果所有电话号码都与您的示例中的一样,您可以使用单个替换:

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

    【讨论】:

    • 感谢您的建议。但是,当我尝试使用此编码时,该字段并未自动格式化。
    • @Ken:很奇怪,对我来说效果很好,点击这个链接:eval.in/181848
    • 我一定是做错了什么。我将不得不摆弄你的建议,看看我是否能让它正常工作。到目前为止,没有运气。
    猜你喜欢
    • 1970-01-01
    • 2012-01-11
    • 1970-01-01
    • 2019-05-23
    • 2021-04-22
    • 2021-01-21
    • 2016-01-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多