我知道这个漂亮的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
。
我该如何制作这个面具?
对于第二种类型的输入,实际上可能存在有限数量的字母前缀,如下所示:
基本上,只是告诉用户在给定号码“呼叫”的常用方法。对于这个问题,我们假设前缀只能是上面的单词。这意味着前缀的格式通常为Call|Contact|Talk|Phone|Telephone
,optional #
,optional :
。
整体面具如下:
optional Call|Contact|Talk|Phone|Telephone
optional #
optional :
+999 9 999 9999
答案 0 :(得分: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 */ +
"$");