日期:2014-05-17  浏览次数:20947 次

转义字符 的问题
本帖最后由 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个
)     //捕获组结束