读书人

转义字符 的有关问题

发布时间: 2012-12-26 14:39:28 作者: rapoo

转义字符 的问题
本帖最后由 FenDougiggle 于 2012-12-12 16:00:47 编辑


using System;
using System.Collections.Generic;
using System.Text;
using System.Text.RegularExpressions;
namespace regexReplace
{
class Program
{
static void Main(string[] args)
{ //定义一个电子邮件正则表达式
string regexText = @"\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*";
Console.WriteLine("请输入一个正确的Internet电子邮件地址");
string Email = Console.ReadLine();//接受用户输入的电子邮件
bool b;
b = Regex.IsMatch(Email, regexText);//判断是否匹配
if (b)
{
string outStr = "";
outStr = Regex.Replace(Email, "@", " AT "); //替换"@"为"AT"
Console.WriteLine("该email是合法的");
Console.WriteLine("替换后为:{0}", outStr);
}
else
{
Console.WriteLine("你所输入的字符串中不是一个合法的Internet电子邮件地址");
}
Console.ReadLine();

}
}
}



如果把第11行改为
string regexText = @"\w+@\w+.+\w"; 

我觉得没有什么不可以的,各位有高见吗?
求高手帮忙解释一下
string regexText = @"\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*";

是什么意思,感觉好复杂啊!
[解决办法]
你要先明白\w 的意思
\w相当于[0-9a-zA-Z_]即数字、字母、下划线
再看看邮件的格式要求
\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*
\w+
必须以数字、字母、下划线开头

([-+.']\w+)*
* 表示0个或多个,即有没有都可以

\. 是.的转义,必须包括.

其他的对比看吧

[解决办法]
( //匿名捕获组 开始部分
[-+.'] // 匹配字符 -或+或.或' 中任意一个
\w+ //匹配字母数字下划线和汉字,匹配1到N个
) //捕获组结束

读书人网 >C#

热点推荐