2010-11-08 119 views
0

假设我们有一些定义长度的字符串,它可能包含一些分隔符,它们仅用于用户友好的视图。某些长度的正则表达式忽略指定字符

实施例:9位串, “123456789”,能够被呈现像 “123456789” 或 “123.456.789” 或 “1-234-5-67-89” 或 “123 456 789”

我需要的是一个正则表达式,它可以计算忽略分隔符的长度。 喜欢的东西[\d|,\.\-\s]{9},但与只\ d计数于{9}(允许...任选,分隔符不应连续超过2的任意数量的分隔符)

+0

您没有使用“分隔符”,而是“分隔符”?或者你呢? ** QUOTE **:*分隔符*:用于将界限设置为任意大小的文本对象的“字符”或“字符串”,不要与“分隔符”或“终止符”混淆。 “划界”的确意味着“包围”或“包围”(就像这些括号一样)。 – tchrist 2010-11-08 16:26:41

+0

当然,“分隔符”。对不起,我的英语:) – manuna 2010-11-08 16:48:06

回答

4
^[-.,\s]*(?:\d[-.,\s]*){9}$ 

任选,分隔符不该“T连续超过二:

^[-.,\s]{0,2}(?:\d[-.,\s]{0,2}){9}$ 
+0

正确的,发布后的问题我已经到了类似的部分,就像:(\ d [\ - ] {0,1}){11,13}(在我的情况下^和$是不需要,因为搜索需要经过一段文字) 不过,我想知道什么“(?:)”用法增加了这个表达式?如果我们不需要反向引用,它通常更喜欢“()”吗? – manuna 2010-11-08 16:45:15

+0

@manuna:对。 – kennytm 2010-11-08 17:12:45

0

而不是困扰我的头要找到一个合适的正则表达式可以做到这一点,我宁愿使用更简单的正则表达式之一:

  • 查找所有数字并检查匹配数量,或者
  • 删除所有非数字并检查剩余的长度。
相关问题