C#正则表达和重复的卷曲括号

时间:2013-07-18 10:25:22

标签: c# regex repeat

我对正则表达式相对较新,但仍然在苦苦挣扎。重复是目前我沮丧的根源。我被要求写一个正则表达式匹配格式为+447的手机号码,然后是一个9位数的字符串。经过一番阅读,我想出了:

string num = @"+447123456789";
string reg = "^[+447]([0-9]{9})$";
Regex filter = new Regex(reg);

假设它已读,必须以+447([...]指定要匹配的显式字符开头)后跟任何9位0-9,但filter.IsMatch(num)始终返回false。我尝试用+替换{9}并返回true,但是当它应该失败时它也返回true(即num保持值为“+4”)。

根据我的结果,我认为我误解了[...]的使用(否则一个简单的+4不应该返回true)和{...}(我理解它是指前面的序列(在我的情况,[0-9])重复...次,在我的情况下,9)。

非常感谢任何帮助, 提前致谢, CprlKleg

2 个答案:

答案 0 :(得分:3)

尝试string reg = "^\+447([0-9]{9})$";string reg = "^\+447(\d{9})$";

答案 1 :(得分:2)

您需要使用^\+447(\d{9})$

你必须知道+是Regex中的一个特殊字符,因此需要一个反斜杠字符来避免它。 + or . or $和其他许多人被视为特殊角色。

\d仅表示数字。 \w表示字符+数字+下划线

希望它有所帮助。