1

我对正则表达式相对较新,并且仍在努力。目前,重复是我沮丧的根源。我被要求编写一个匹配 +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

4

2 回答 2

3

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

于 2013-07-18T10:27:55.783 回答
2

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

您必须知道这+是正则表达式中的一个特殊字符,因此需要一个反斜杠字符来避免它。+ or . or $和许多其他被视为特殊字符。

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

希望能帮助到你。

于 2013-07-18T10:32:36.707 回答