【问题标题】:How can I implement a live Javascript Regex for phone numbers?如何为电话号码实现实时 Javascript 正则表达式?
【发布时间】:2012-05-23 23:25:14
【问题描述】:

我有一个文本框,上面写着“电话:”,因为这里电话号码的标准是 (XXX)-XXX-XXXX 我想要一个 javascript,如果它不是那种格式,它会自动将我的数字放入该格式,所以如果你输入 9993334444 那么它会在我输入 (999)-333-4444 时自动自动更改它我在 Google 上搜索了 Javascript Phone Regex,但没有成功,也许 Regex 不是我想要的?

【问题讨论】:

  • 这真是不容易解决!如果用户输入“999”,那么您可能希望在输入字段中显示“(999)-”。如果用户然后输入 您可能希望在该字段中显示“(99”。另一个棘手的部分可能是复制和粘贴文本。我曾经必须为客户端实现类似的问题,但要做的工作很多最终结果并不是一个方便的解决方案。:(
  • 您还说您永远不会在具有不同电话号码标准的语言环境中使用此软件。让用户自己做吧。

标签: javascript regex


【解决方案1】:

你想添加一个带有正则表达式的 onkeyup 事件

this.value = this.value.replace(/^\(?([0-9][0-9][0-9]){1}\)?-?([0-9][0-9][0-9][0-9]){1}-?([0-9][0-9][0-9]){1}$/, '($1)-$2-$3');

查看http://jsfiddle.net/R8enX/

/ means start/end a regex string
^ means start of matching string
$ means end of matching string
? means 0 or 1 instances (make braces and dashes optional)
[0-9] means any single digit
(x){1} tags x as an expression that we can reference in the replacement with a $ sign

编辑:意识到我错过了最后一组数字中的一个数字,jsfiddle 只能(正确)使用最后一组中的 3 个数字

【讨论】:

  • 不知道 jsfiddle 只能在最后一组中的 3 位数字上正常工作是什么意思,因为我刚刚尝试了代码并且工作正常 :) 我不知道 onkeyup 事件,我以为我必须使用 Onclick,所以你今天教了我一些东西。非常感谢!
【解决方案2】:

要在@Andrews 答案的基础上有所建树,您可以通过此方法检查有效的(本地)电话号码。如果数字小于或大于 10 位数字,则它会重新折叠为无效数字

-

<input type="text" onBlur="localNumber(this.value)"/>

<div id="output"></div>

-

<script>

var localNumber = function(str){

    repl = str.replace(/^([0-9]{3})([0-9]{3})([0-9]{4})$/, "($1)-$2-$3");
    outp = document.getElementById('output');

    if( repl.match(/\W/) )
    {
        outp.innerHTML = repl;
    }
    else
    {
        outp.innerHTML = 'Invalid number for this region';
    }

}

</script>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-10-18
    • 1970-01-01
    • 2017-09-23
    • 2014-02-15
    • 2011-05-08
    • 2016-02-02
    相关资源
    最近更新 更多