2

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

因此,假设我希望用这种格式屏蔽一个字段:+999 9 999 9999 这很好,而且它正在工作。

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

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

  • +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|Contact|Talk|Phone|Telephone, optional #, optional :

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

4

1 回答 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 */ +
                        "$");
于 2013-09-04T16:11:41.357 回答