首页 文章

使用可选字母前缀屏蔽输入到电话号码格式

提问于
浏览
2

我知道这个很好的jquery插件:http://digitalbush.com/projects/masked-input-plugin/用于Masked输入,我可以使用它 .

所以,假设我想要一个字段被这种格式掩盖: +999 9 999 9999 那's fine, and it'正在工作 .

问题是,有时在该领域内,我的用户还可以选择在该号码之前提供一些文本 .

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

  • +999 9 999 9999

  • any optional alphabet letters and special characters (but not digits!) +999 9 999 9999

例如,这是一个有效的用户输入: +966 1 484 1122 .

这也是一个有效的用户输入: Phone #: +966 1 484 1122 .

我该怎么做这个面膜?

编辑

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

  • 电话:999 9 999 9999

  • 电话999 9 999 9999

  • 电话号码999 9 999 9999

  • 电话号码:999 9 999 9999

  • 电话:999 9 999 9999

  • 给我打电话:999 9 999 9999

  • 致电999 9 999 9999

  • 电话999 9 999 9999

  • 电话号码#999 9 999 9999

  • 电话:999 9 999 9999

  • 对话999 9 999 9999

  • 联系方式:999 9 999 9999

  • 联系#999 9 999 9999

  • 联系电话:999 9 999 9999

基本上,只是通常可能的方式告诉用户"call"给定的数字 . 对于这个问题,我们假设前缀只能是上面的单词 . 这意味着前缀的格式通常是 Call|Contact|Talk|Phone|Telephoneoptional #optional : .

整个面具是这样的: optional Call|Contact|Talk|Phone|Telephone optional # optional : +999 9 999 9999

1 回答

  • 3

    使用以下正则表达式:

    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 */ +
                            "$");
    

相关问题