RegExp只允许不包含一组前缀的字符串

时间:2012-11-21 12:52:24

标签: .net regex string validation

我找不到任何类似的问题,所以就这样了。

我需要一个可以验证电话号码的正则表达式。首先,只允许数字,短划线和'+'。

困难的部分是只允许以下列集合中的任何字符串开头的表达式:

50  
51  
53  
57  
60  
66  
69  
72  
73  
78  
79  
88  

不应允许任何其他没有这些前缀的数字。

我会非常感谢任何提示!谢谢!

2 个答案:

答案 0 :(得分:4)

前缀部分非常简单。 ^是一个锚点,表示字符串的开头。然后添加你想要的模式(我相信你想允许加号作为第一个字符):

^\+?(?:50|51|53|57|60|66|69|72|73|78|79|88)[\d-]+$

请注意,$^相对应,并确保您的字符串不包含电话号码后的非数字非短划线字符。

当然,最后的模式可以更具体地禁止连续破折号等。

另请注意,.NET中的\d匹配任何Unicode数字字符。如果这不是您想要的,请使用[0-9-]

答案 1 :(得分:1)

你需要调整一下,但这是一个开始:

^(50|51|53|57|60|66|69|72|73|78|79|88)\d+$
                                       ^
                                       |
                                       -----This part probably needs 
                                            more constraints, depending on 
                                            your format