一 概念
- 正则表达式的主要作用是验证字符串的值是否满足一定的规则
- 在页面输入数据验证方面的应用比较多,比如验证输入的邮箱是否合法、输入的身份证号码是否合法、输入的用户名是否满足条件等
- 正则表达式并不是C#语言独有的,在大多数的编程语言中都是支持的,包括一些脚本语言也支持,例如JavaScript、JQuery等
二 正则表达式的写法
- 正则表达式是专门处理字符串操作的,其本身有固定的写法
- 正则表达式的符号主要分为元字符和表示重复的字符
2.1 字符列表
正则表达式中的元字符
编号 |
字符 |
描述 |
1 |
. |
匹配除换行符以外的所有字符 |
2 |
\w |
匹配字母、数字、下划线 |
3 |
\s |
匹配空白符(空格) |
4 |
\d |
匹配数字 |
5 |
\b |
匹配表达式的开始或结束 |
6 |
^ |
匹配表达式的开始 |
7 |
$ |
匹配表达式的结束 |
正则表达式中表示重复的字符
编号 |
字符 |
描述 |
1 |
* |
0次或多次字符 |
2 |
? |
0次或1次字符 |
3 |
+ |
1次或多次字符 |
4 |
{n} |
n次字符 |
5 |
{n,M} |
n次到M次字符 |
6 |
{n,} |
n次以上字符 |
2.2 使用说明
- 此外,在正则表达式中使用
|
分隔符表示多个正则表达式之间的关系,也就是在匹配某一个字符串时满足其中一个正则表达式即可。例如使用正则表达式来验证身份信息,第一代身份证是由15个数字构成的,第二代身份证是由18个数字构成的,正则表达式可以写成\d{15}|\d{18}
\
- 在C#语言中使用正则表达式时要用到Regex类,该类在System.Text.RegularExpressions名称空间中
- 在Regex类中使用IsMatch方法判断所匹配的字符串是否满足正则表达式的要求
三 实例 在 Main 方法中从控制台输入一个邮箱,使用正则表达式判断其正确性
3.1 分析
根据题目要求,在本例中邮箱验证的正则表达式的写法是包含@,在@前面是字母或者数字、下划线,在@后面也是字母或者数字、下划线,并且字母后面要含有.
,在.
后面还要加上字母或者数字、下划线
3.2 代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| class Program { static void Main(string[] args) { Console.WriteLine("请输入一个邮箱"); string email = Console.ReadLine(); Regex regex = new Regex(@"^(\w)+(\.\w)*@(\w)+((\.\w+)+)$"); if (regex.IsMatch(email)) { Console.WriteLine("邮箱格式正确。"); } else { Console.WriteLine("邮箱格式不正确。"); } } }
|
3.3 说明
四 常用的正则表达式
编号 |
正则表达式 |
作用 |
1 |
\d{15}|\d{18} |
验证身份证号码(15位或18位) |
2 |
\d{3}-\d{8}|\d{4}-\d{7} |
验证国内的固定电话(区号有3位或4位,并在区号和电话号码之间加上-) |
3 |
^[1-9]\d*$ |
验证字符串中都是正整数 |
4 |
^-[1-9]\d*$ |
验证字符串中都是负整数 |
5 |
^-?[1-9]\d*$ |
验证字符串中都是整数 |
6 |
^[A-Za-z]+$ |
验证字符串中全是字母 |
7 |
A[A-Za-z0-9]+$ |
验证字符串由数字和字母构成 |
8 |
[\u4e00-\u9fa5] |
匹配字符串中的中文 |
9 |
[^\x00-\xff] |
匹配字符串中的双字节字符(包括汉字) |