一般的正则表达式混乱。试图验证电话号码

时间:2012-10-30 18:14:49

标签: c# regex

所以我用Regex做的一切似乎都没有达到我的预期。这句话,我希望抛出任何字母,最少需要3位数字,但不需要3位数字。它确实不允许使用字母,但任何数字都是好的。

myReg = new Regex(@"(^[a-z])([0-9]{3,3})*");

我希望^ [a-z]抛出字母而[0-9] {3,3}需要3位数字。

不妨添加整个代码块,不思考。

userData = phone.Text;

myReg = new Regex(@"(^[a-z])([0-9]{3})+");

        foreach (var validName in myReg.Matches(userData))
        {
            if (myReg.IsMatch(userData))
            {
                phone.Clear();
                badData.Visible = true;
                phone.Focus();
            }
        }

5 个答案:

答案 0 :(得分:1)

匹配

One character that isn't a letter from a to f, stored in a backreference,
followed by zero or more instances of: 
    3 characters that are digits from 0-9
    stored in another backreference.

我认为你需要:^[0-9]{3}+$

匹配包含以下内容的字符串:

One or more instances of:
    3 characters that are digits from 0-9

如果您只需要一个包含3个以上字符且完全由数字组成的字符串,则可以使用:^[0-9]+$

答案 1 :(得分:1)

请尝试使用此选项,只需要三位数字:

var regex = new Regex(@"^\d{3}$");

答案 2 :(得分:0)

我认为*指的是你可以放任意数量的字符。尝试删除" *"并看看它是否有效。

答案 3 :(得分:0)

试试这个:

"(\+?\d{1,5}(?:[\s_-]{0,1}\d{2,4}[\s_-])+)"

答案 4 :(得分:0)

^(?=.{3,10})([2-9]\d{2,9})
  • ^(?=.{3,10})从一开始,必须至少有3个项目,但不得超过10个
  • [2-9]没有美国号码可以以1开头,因此请确保2-9的范围是允许的第一个号码的范围。
  • \d{2,9}国家/地区必须有2个以上的9个数字。