C#正则表达式大全

  目录

  一、简介

  正则表达式是一种匹配输入文本的模式,.Net 框架提供了允许这种匹配的正则表达式引擎,模式由一个或多个字符、运算符和结构组成。下面列出了用于定义正则表达式的各种类别的常用字符、运算符和结构。

  字符转义

  正则表达式中的反斜杠字符()指示其后跟的字符是特殊字符,或应按原义解释该字符。

  转义字符描述模式匹配a与报警 (bell) 符  匹配。a"Warning!" + '' 中的 ""b在字符类中,与退格键  匹配。[b]{3,}"bbbb" 中的 "bbbb" 与制表符 匹配。(w+) "Name Addr " 中的 "Name " 和 "Addr "

  与回车符

  匹配。(

  与换行符

  不是等效的。)

  (w+)"

  Hello

  World." 中的 "

  Hello"v与垂直制表符 匹配。[v]{2,}"vvv" 中的 "vvv"f与换页符 匹配。[f]{2,}"fff" 中的 "fff"

  与换行符

  匹配。

  (w+)"

  Hello

  World." 中的 "

  Hello"e与转义符  匹配。e"x001B" 中的 "x001B" nnn使用八进制表示形式指定一个字符(nnn 由二到三位数字组成)。w040w"a bc d" 中的 "a b" 和 "c d"x nn使用十六进制表示形式指定字符(nn 恰好由两位数字组成)。wx20w"a bc d" 中的 "a b" 和 "c d"c X c x匹配 X 或 x 指定的 ASCII 控件字符,其中 X 或 x 是控件字符的字母。cC"x0003" 中的 "x0003" (Ctrl-C)쪧n使用十六进制表示形式匹配一个 Unicode 字符(由 nnnn 表示的四位数)。w w"a bc d" 中的 "a b" 和 "c d"在后面带有不识别的转义字符时,与该字符匹配。d+[+-x*]d+d+[+-x*d+"(2+2) * 3*9" 中的 "2+2" 和 "3*9"

  字符类

  字符类与一组字符中的任何一个字符匹配。

  字符类描述模式匹配[character_group]匹配 character_group 中的任何单个字符。 默认情况下,匹配区分大小写。[mn]"mat" 中的 "m","moon" 中的 "m" 和 "n"[^character_group]非:与不在 character_group 中的任何单个字符匹配。 默认情况下,character_group 中的字符区分大小写。[^aei]"avail" 中的 "v" 和 "l"[ first - last ]字符范围:与从 first 到 last 的范围中的任何单个字符匹配。[b-d][b-d]irds 可以匹配 Birds、 Cirds、 Dirds.通配符:与除

  之外的任何单个字符匹配。

  若要匹配原意句点字符(. 或 .),您必须在该字符前面加上转义符 (.)。a.e"have" 中的 "ave", "mate" 中的 "ate"p{ name }与 name 指定的 Unicode 通用类别或命名块中的任何单个字符匹配。p{Lu}"City Lights" 中的 "C" 和 "L"P{ name }与不在 name 指定的 Unicode 通用类别或命名块中的任何单个字符匹配。P{Lu}"City" 中的 "i"、 "t" 和 "y"w与任何单词字符匹配。w"Room#1" 中的 "R"、 "o"、 "m" 和 "1"W与任何非单词字符匹配。W"Room#1" 中的 "#"s与任何空白字符匹配。ws"ID A1.3" 中的 "D "S与任何非空白字符匹配。sS"int __ctr" 中的 " _"d与任何十进制数字匹配。d"4 = IV" 中的 "4"D匹配不是十进制数的任意字符。D"4 = IV" 中的 " "、 "="、 " "、 "I" 和 "V"

  分组构造

  分组构造描述了正则表达式的子表达式,通常用于捕获输入字符串的子字符串。

  分组构造描述模式匹配( subexpression )捕获匹配的子表达式并将其分配到一个从零开始的序号中。(w)1"deep" 中的 "ee"(?< name >subexpression)将匹配的子表达式捕获到一个命名组中。(?< double>w)k< double>"deep" 中的 "ee"(?< name1 -name2 >subexpression)定义平衡组定义。(((?'Open'()[^()]*)+((?'Close-Open'))[^()]*)+)*(?(Open)(?!))$"3+2^((1-3)*(3-1))" 中的 "((1-3)*(3-1))"(?: subexpression)定义非捕获组。Write(?:Line)?"Console.WriteLine()" 中的 "WriteLine"(?imnsx-imnsx:subexpression)应用或禁用 subexpression 中指定的选项。Ad{2}(?i:w+)b"A12xl A12XL a12xl" 中的 "A12xl" 和 "A12XL"(?= subexpression)零宽度正预测先行断言。w+(?=.)"He is. The dog ran. The sun is out." 中的 "is"、 "ran" 和 "out"(?! subexpression)零宽度负预测先行断言。b(?!un)w+b"unsure sure unity used" 中的 "sure" 和 "used"(?<=subexpression)零宽度正回顾后发断言。(?<=19)d{2}b"1851 1999 1950 1905 2003" 中的 "99"、"50"和 "05"(? subexpression)非回溯(也称为"贪婪")子表达式。[13579](?>A+B+)"1ABB 3ABBC 5AB 5AC" 中的 "1ABB"、 "3ABB" 和 "5AB"

  限定符

  限定符指定在输入字符串中必须存在上一个元素(可以是字符、组或字符类)的多少个实例才能出现匹配项。 限定符包括下表中列出的语言元素。

  限定符描述模式匹配*匹配上一个元素零次或多次。d*.d".0"、 "19.9"、 "219.9"+匹配上一个元素一次或多次。"be+""been" 中的 "bee", "bent" 中的 "be"?匹配上一个元素零次或一次。"rai?n""ran"、 "rain"{ n }匹配上一个元素恰好 n 次。",d{3}""1,043.6" 中的 ",043", "9,876,543,210" 中的 ",876"、 ",543" 和 ",210"{ n ,}匹配上一个元素至少 n 次。"d{2,}""166"、 "29"、 "1930"{ n , m }匹配上一个元素至少 n 次,但不多于 m 次。"d{3,5}""166", "17668", "193024" 中的 "19302"*?匹配上一个元素零次或多次,但次数尽可能少。d*?.d".0"、 "19.9"、 "219.9"+?匹配上一个元素一次或多次,但次数尽可能少。"be+?""been" 中的 "be", "bent" 中的 "be"??匹配上一个元素零次或一次,但次数尽可能少。"rai??n""ran"、 "rain"{ n }?匹配前导元素恰好 n 次。",d{3}?""1,043.6" 中的 ",043", "9,876,543,210" 中的 ",876"、 ",543" 和 ",210"{ n ,}?匹配上一个元素至少 n 次,但次数尽可能少。"d{2,}?""166"、 "29" 和 "1930"{ n , m }?匹配上一个元素的次数介于 n 和 m 之间,但次数尽可能少。"d{3,5}?""166", "17668", "193024" 中的 "193" 和 "024"

  二、C#常用正则表达式符号大全

  验证数字:^[0-9]*$

  验证n位的数字:^d{n}$

  验证至少n位数字:^d{n,}$

  验证m-n位的数字:^d{m,n}$

  验证零和非零开头的数字:^(0|[1-9][0-9]*)$

  验证有两位小数的正实数:^[0-9]+(.[0-9]{2})?$

  验证有1-3位小数的正实数:^[0-9]+(.[0-9]{1,3})?$

  验证整数和一位小数:^[0-9]+(.[1-9]{1})?$

  验证非零的正整数:^+?[1-9][0-9]*$

  验证非零的负整数:^-[1-9][0-9]*$

  验证非负整数(正整数 + 0) ^d+$

  验证非正整数(负整数 + 0) ^((-d+)|(0+))$

  验证长度为3的字符:^.{3}$

  验证由26个英文字母组成的字符串:^[A-Za-z]+$

  验证由26个大写英文字母组成的字符串:^[A-Z]+$

  验证由26个小写英文字母组成的字符串:^[a-z]+$

  验证由数字和26个英文字母组成的字符串:^[A-Za-z0-9]+$

  验证由数字、26个英文字母或者下划线组成的字符串:^w+$

  验证用户密码:^[a-zA-Z]w{5,17}$ 正确格式为:以字母开头,长度在6-18之间,只能包含字符、数字和下划线。

  验证是否含有 ^%&',;=?$" 等字符:[^%&',;=?$x22]+

  验证汉字:^[一-龥]+$

  验证Email地址:^(w)+(.w+)*@(w)+((.w{2,3}){1,3})$

  验证InternetURL:^http://([w-]+.)+[w-]+(/[w-http://www.jb51.net/article/?%&=]*)?$ ;^[a-zA-z]+://(w+(-w+)*)(.(w+(-w+)*))*(?S*)?$

  验证电话号码:^((d{3,4})|d{3,4}-)?d{7,8}$:--正确格式为:XXXX-XXXXXXX,XXXX-XXXXXXXX,XXX-XXXXXXX,XXX-XXXXXXXX,XXXXXXX,XXXXXXXX。

  验证身份证号(15位或18位数字):^d{15}|d{18}|d{17}X$

  验证一年的12个月:^(0?[1-9]|1[0-2])$ 正确格式为:“01”-“09”和“1”“12”

  验证一个月的31天:^((0?[1-9])|((1|2)[0-9])|30|31)$ 正确格式为:01、09和1、31。

  整数:^-?d+$

  非负浮点数(正浮点数 + 0):^d+(.d+)?$

  正浮点数 ^(([0-9]+.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*.[0-9]+)|([0-9]*[1-9][0-9]*))$

  非正浮点数(负浮点数 + 0) ^((-d+(.d+)?)|(0+(.0+)?))$

  负浮点数 ^(-(([0-9]+.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*.[0-9]+)|([0-9]*[1-9][0-9]*)))$

  浮点数 ^(-?d+)(.d+)?

  0-100之间的数,小数点后面最多两位^(?:(?!0d)d{1,2}(?:.d{1,2})?|100(?:.0{1,2})?)

  验证html标记 /<[^>]+>/g

  三、代码

  是否包含a、b、c

  static void Main(string[] args)

  {

  //判断是否包含a、b、c三个字符

  string str = Console.ReadLine(); //把用户输入的字符存入 str

  string regex = @"[abc]"; //C#中 加@"[abc]" 为正则表达式基本写法

  bool isMatch = Regex.IsMatch(str, regex); //比较: IsMatch(需要判断的字符,正则):返回bool值

  Console.WriteLine(isMatch ? "Match [abc]" : "not Match[abc]"); //输出结果

  Console.WriteLine();

  }

  替换正则开头或结尾

  static void Main(string[] args)

  {

  StringBuilder s = new StringBuilder("www.baidu.com", 50); //声明一个字符串,容量50

  //news=正则类.替换字符串(需要处理的字符串,正则,添加的字符串)—— 把符合正则情况的位置,替换为 后边字符串

  //替换开头

  string news = Regex.Replace(s.ToString(), "^", "网址:"); //^ :代表开头

  Console.WriteLine(news); //输出

  //替换结尾

  news = Regex.Replace(s.ToString(), "$", "结尾"); //$:代表结尾

  Console.WriteLine(news);

  Console.ReadLine();

  }

  匹配以任意除字母、下划线、数字以外的字符开头和结尾的

  static void Main(string[] args)

  {

  string s = Console.ReadLine(); //s接收用户输入

  string regex = @"^W*$"; //正则:以任意除字母、下划线、数字以外的字符开头和结尾的

  bool isMatch = Regex.IsMatch(s, regex); //匹配用户输入,是否满足正则条件

  Console.WriteLine(isMatch ? "满足" : "不满足"); //三目运算

  Console.WriteLine();

  }

  替换字符

  static void Main(string[] args)

  {

  string s = "abcdef";

  string regex = @"[^bde]"; //[^bde]代表了除 b、d、e之外的所有字符,任意一个字符

  string newReplace = Regex.Replace(s, regex, "1"); //匹配 s 中,除了bde之外的字符,替换为 1

  Console.WriteLine(newReplace);

  Console.WriteLine();

  }

  匹配QQ号

  static void Main(string[] args)

  {

  string qq = Console.ReadLine(); //等待用户输入

  string regex = @"^d{5,11}$"; //正则:开头结尾都是数字,并且5-11位都为数字

  bool isqq = Regex.IsMatch(qq, regex); //判断并返回布尔值

  Console.WriteLine(isqq ? "是QQ号" : "不是QQ号"); //三目运算

  Console.WriteLine();

  }

  验证IP地址

  static void Main(string[] args)

  {

  string regex = @"^((([1]?dd?|2[0-4]d|25[0-5]).){3}([1]?dd?|2[0-4]d|25[0-5]))$"; //判断IP地址是否合规

  while (true)

  {

  string s = Console.ReadLine(); //等待用户输入

  bool isMatch = Regex.IsMatch(s, regex); //验证ip是否合法

  Console.WriteLine(isMatch ? "是IP地址" : "不是IP地址"); //三目运算

  }

  }

  到此这篇关于C#正则表达式的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

  您可能感兴趣的文章: