【发布时间】:2015-09-04 12:13:07
【问题描述】:
我搜索了整个谷歌以找到一些方法来验证电话号码是否是罗马尼亚语,但没有找到任何对我有帮助的东西...... 我想要以下数字格式的正则表达式验证器:
074xxxxxxx
075xxxxxxx
076xxxxxxx
078xxxxxxx
072xxxxxxx
077xxxxxxx
0251xxxxxx
0351xxxxxx
这是我制作的正则表达式,但它不起作用:
{ "Romania", new Regex("(/^(?:(?:(?:00\\s?|\\+)40\\s?|0)(?:7\\d{2}\\s?\\d{3}\\s?\\d{3}|(21|31)\\d{1}\\s?\\d{3}\\s?\\d{3}|((2|3)[3-7]\\d{1})\\s?\\d$)")}
它不会验证正确的数字格式。
更多细节:
如果号码不是以我添加的初始号码开头,则该号码无效。
x 应该包含任何数字,但不应包含相同的数字..如 0000000 1111111 等。
也可以有以下格式(但非强制):(072)xxxxxxx
有什么办法吗?
我想实现这个以将这些数字存储在数据库中并检查它们的格式是否为罗马尼亚语。 这是我需要添加正则表达式的代码...应该有一个名为“罗马尼亚”的新正则表达式
static IDictionary<string, Regex> countryRegex = new Dictionary<string, Regex>()
{
{ "USA", new Regex("^[2-9]\\d{2}-\\d{3}-\\d{4}$")},
{ "UK", new Regex("(^1300\\d{6}$)|(^1800|1900|1902\\d{6}$)|(^0[2|3|7|8]{1}[0-9]{8}$)|(^13\\d{4}$)|(^04\\d{2,3}\\d{6}$)")},
{ "Netherlands", new Regex("(^\\+[0-9]{2}|^\\+[0-9]{2}\\(0\\)|^\\(\\+[0-9]{2}\\)\\(0\\)|^00[0-9]{2}|^0)([0-9]{9}$|[0-9\\-\\s]{10}$)")},
};
【问题讨论】:
-
你的定义不够清楚。您提供的硬编码前缀是否需要明确匹配?你允许某些特殊字符吗?您是否试图仅提取数字以便将这些数字存储在数据库中?
-
抱歉,我已经更新了描述。如果我能允许'()'和'-'分隔数字,那就太好了
-
为什么要使用正则表达式?您可以手动检查字符串并为自己省去所有痛苦。正则表达式并不总是最好的解决方案。
-
正如@MichaelPerrenoud 所说,我们很乐意帮助您构建这样的正则表达式,但构建一个好的正则表达式需要了解模式规则。由于我们大多数人都不是来自罗马尼亚,因此您需要非常清楚应该被视为匹配的所有可能变化。要使这个问题成为一个体面的问题,需要一个描述什么匹配和不匹配的规则列表以及一个应该匹配和不应该匹配的示例列表。
-
我正在使用 Web 应用程序的教程,它正在使用正则表达式