正则表达式只允许不包含一组前缀的字符串



我找不到任何与此类似的问题,所以就在这里。

我需要一个正则表达式来验证电话号码。因此,首先只允许使用数字、破折号和"+"。

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

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

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

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

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

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

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

当然,最后的模式可以更具体地制作,以禁止连续的破折号之类的东西。

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

你需要调整这个,但这里有一个开始:

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

最新更新