Javascript 将带有可选字母前缀的输入屏蔽为电话号码格式

Javascript 将带有可选字母前缀的输入屏蔽为电话号码格式,javascript,jquery,forms,input,validation,Javascript,Jquery,Forms,Input,Validation,我知道这个不错的jquery插件: 对于屏蔽输入,我可以很好地使用它 假设我想要一个字段被以下格式屏蔽:+9999999 这很好,而且很有效 问题是,有时在字段中,我的用户也可以选择在数字之前给出一些文本 因此,对用户有效的两个输入是: +99999999999 任何可选字母和特殊字符(但不是数字!)+99999999999 例如,这是一个有效的用户输入:+96614841122 这也是一个有效的用户输入:电话:+96614841122 我怎么做这个面具 编辑 对于第二种类型的输入,实际上可

我知道这个不错的jquery插件: 对于屏蔽输入,我可以很好地使用它

假设我想要一个字段被以下格式屏蔽:
+9999999
这很好,而且很有效

问题是,有时在字段中,我的用户也可以选择在数字之前给出一些文本

因此,对用户有效的两个输入是:

  • +999
    9
    999
    9999
  • 任何可选字母和特殊字符(但不是数字!)
    +999
    9
    999
    9999
例如,这是一个有效的用户输入:
+96614841122

这也是一个有效的用户输入:
电话:+96614841122

我怎么做这个面具

编辑 对于第二种类型的输入,实际上可能有有限数量的字母前缀,如下所示:

  • 电话:+999 9999
  • 电话+999 9999
  • 电话#+999 9 999
  • 电话#:+999 9999
  • 电话:+999 9999
  • 给我打电话:+999 9999
  • 致电+999 9999
  • 电话+999 9999
  • 电话#+999 9 999
  • 电话:+999 9999
  • 通话+9999999
  • 联系人:+999 9999
  • 联系#+999 9 999
  • 联系方式:+999 9 999
基本上,这只是告诉用户按给定号码“呼叫”的常用方式。对于这个问题,我们假设前缀只能是上面的单词。这意味着前缀的格式通常是
Call | Contact | Talk | Phone | Telephone
可选#
可选:

整个面具是这样的:
optional Call | Contact | Talk | Phone |电话
optional#
optional:
+999 9999使用以下正则表达式:

var phone_mask = /^[^0-9]*\+9{3}\s9\s9{3}\s9{4}$/;

phone_mask.test("Phone: +999 9 999 9999")
phone_mask.test("Phone +999 9 999 9999")
phone_mask.test("Phone # +999 9 999 9999")
phone_mask.test("Phone #: +999 9 999 9999")
phone_mask.test("Call: +999 9 999 9999")
phone_mask.test("Call me: +999 9 999 9999")
phone_mask.test("Call +999 9 999 9999")
phone_mask.test("Telephone +999 9 999 9999")
phone_mask.test("Telephone # +999 9 999 9999")
phone_mask.test("Telephone: +999 9 999 9999")
phone_mask.test("Talk +999 9 999 9999")
phone_mask.test("Contact: +999 9 999 9999")
phone_mask.test("Contact # +999 9 999 9999")
phone_mask.test("Contact #: +999 9 999 9999")
var phone_mask = RegExp("^[^0-9]*"/* Optional non-numeric characters */ +
                        "\\+9{3}" /* Followed by a plus sign and three nines */ +
                        "\\s9"    /* Followed by a space and one nine */  +
                        "\\s9{3}" /* Followed by a space and three nines */ +
                        "\\s9{4}" /* Followed by a space and four nines */ +
                        "$");
下面是正则表达式的注释分解:

var phone_mask = /^[^0-9]*\+9{3}\s9\s9{3}\s9{4}$/;

phone_mask.test("Phone: +999 9 999 9999")
phone_mask.test("Phone +999 9 999 9999")
phone_mask.test("Phone # +999 9 999 9999")
phone_mask.test("Phone #: +999 9 999 9999")
phone_mask.test("Call: +999 9 999 9999")
phone_mask.test("Call me: +999 9 999 9999")
phone_mask.test("Call +999 9 999 9999")
phone_mask.test("Telephone +999 9 999 9999")
phone_mask.test("Telephone # +999 9 999 9999")
phone_mask.test("Telephone: +999 9 999 9999")
phone_mask.test("Talk +999 9 999 9999")
phone_mask.test("Contact: +999 9 999 9999")
phone_mask.test("Contact # +999 9 999 9999")
phone_mask.test("Contact #: +999 9 999 9999")
var phone_mask = RegExp("^[^0-9]*"/* Optional non-numeric characters */ +
                        "\\+9{3}" /* Followed by a plus sign and three nines */ +
                        "\\s9"    /* Followed by a space and one nine */  +
                        "\\s9{3}" /* Followed by a space and three nines */ +
                        "\\s9{4}" /* Followed by a space and four nines */ +
                        "$");

你不能屏蔽这个输入。它太复杂了(例如,
P+9661#::+96614841122
是有效的输入吗?不,那是无效的,只有字母和一些特殊字符,如
。我已经编辑了这个问题。也许你只需要创建两个表单,一个用于开头文本(如电话:)第二个是带屏蔽输入的电话号码我可以,但我需要在一个字段中输入用户界面。哇,非常感谢,我刚刚看到了这个。希望这能帮助其他有同样要求的人。但我现在已经离开了那份工作^\^