C#基本的正则表达式操作

[实例4-14]本例将创建一个控制台应用程序,使用正则表达式判断电话号码是否为北京地区的电话号码。首先北京地区电话区号为"010",后面电话号码位数为8,例如:"01088888888"。使用正则表达式的语法规则可进行限定,在控制台项目Program.cs文件的main函数中输入下面代码:

书中的源代码是这样写的:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            string str1, str2, strreg;
            strreg = "010-\\d{8,8}";
            str1 = "010-87675842";
            str2 = "010-1234567808098977";
            Console.WriteLine("是否北京电话号码 " + Regex.IsMatch(str1,strreg).ToString());
            Console.WriteLine("是否北京电话号码 " + Regex.IsMatch(str2,strreg).ToString());
            System.Console.ReadLine();
        }
    }
}

答案是两个都为TRUE
这就不对了,str2的010-后面已经超过8位
为什么还是true呢
那么肯定是他没有进行对整个str2字符串的匹配
而是看010-12345678这部分满足了就行了

下面把strreg = "010-\\d{8,8}";修改为strreg = "^010-\\d{8,8}$";
就可以了.
----------------------------------------------------------------------------------

元字符^(和数字6在同一个键位上的符号)和$都匹配一个位置,这和\b有点类似。^匹配你要用来查找的字符串的开头,$匹配结尾。这两个代码在验证输入的内容时非常有用,比如一个网站如果要求你填写的QQ号必须为5位到12位数字时,可以使用:^\d{5,12}$。

这里的{5,12}和前面介绍过的{2}是类似的,只不过{2}匹配只能不多不少重复2次,{5,12}则是重复的次数不能少于5次,不能多于12次,否则都不匹配。

因为使用了^和$,所以输入的整个字符串都要用来和\d{5,12}来匹配,也就是说整个输入必须是5到12个数字,因此如果输入的QQ号能匹配这个正则表达式的话,那就符合要求了。






你可能感兴趣的:(C#正则表达式)