【问题标题】:Mask input the phone number JavaScript屏蔽输入电话号码 JavaScript
【发布时间】:2014-11-19 07:54:28
【问题描述】:

我需要开发一种输入数字的模式,必须以数字 2 开头并且仍然有 6 位数字或以“(012)2”和 6 位数字开头,否则为“290-53-21”位数和起始数字2,和破折号(-),但我不能在“(012)”处怎么写呢? 我的代码:

function checkNumber(str){
    if(!str.length)
         alert("error");
     var tmp = new RegExp("(2?|\([032]{3}\)?)[0-9-]{6,9}");
     str = str.replace(tmp, "");
     if(str != "")
         alert("error");
}

【问题讨论】:

  • 掩码号可以是:1)2345678 or (012)2345678 or 234-65-34
  • 这个说法正确吗? --- 输入必须是一个 7 位数字,以 2 开头,可以有一个可选的前缀 (012) 和可选的破折号(正好 0 个破折号或正好 2 个破折号)在第 3 位和第 5 位数字2nn-nn-nn 之后跨度>
  • 使用 获得最佳用户体验

标签: javascript expression mask


【解决方案1】:

这个似乎可以解决问题:

^(((\(012\))\d|2)\d{6}|2\d{2}(-\d{2}){2})$

是这样的:

  • ^ 和 $ 是开始和结束...
  • 正则表达式是这样的^( x | y )$
  • 其中 x 是 ((\(012\))\d|2)\d{6},这将匹配 (012)d 或 2 ((\(012\))\d|2) 和 6 位数字与 \d{6}
  • 其中 y 是 2\d{2}(-\d{2}){2},对于 2 后跟 2 个数字 \d{2},然后是两个 -dd (-\d{2}){2}

【讨论】:

  • 你用我的函数检查这个代码吗,我检查了,它不起作用(
  • @badCoder 在你的控制台试试这个/^((\(012\))?2\d{6}|2\d{2}(-\d{2}){2})$/.test('2222222')
  • 很好)),但如果我尝试输入 (012)245-65-78,结果 - 错误
  • 但不一定,谢谢!!
【解决方案2】:
var t = /^(?:\(012\))?2(?:\d{6}|\d{2}(?:-\d{2}){2})$/
t.test(2123456); // true
t.test('212-31-23'); // true
t.test('(012)212-31-23'); // true
t.test('(012)2123123'); // true
t.test('(012)212-34-56'); // true

t.test('((012)2123456245-11-11'); // false

它是这样工作的:

/^ - 表示开始

(?:(012))? - 接受 (012) 或不接受

2 - 最初的 2

(?:A|B) - 接受 6 位数字,例如:'aaaaaa' 或 'aa-aa-aa'

其中 A = \d{6}

和 B = \d{2}(?:-\d{2}){2}

希望对您有所帮助。

【讨论】:

    猜你喜欢
    • 2018-05-04
    • 2012-07-24
    • 2022-01-09
    • 1970-01-01
    • 1970-01-01
    • 2021-01-10
    • 2013-07-13
    • 2015-07-29
    • 1970-01-01
    相关资源
    最近更新 更多