基础知识

1./^$/ 这个是个通用的格式。

 ^ 匹配输入字符串的开始位置;$匹配输入字符串的结束位置

2. 里面输入需要实现的功能。

 * 匹配前面的子表达式零次或多次;

 + 匹配前面的子表达式一次或多次;

 ?匹配前面的子表达式零次或一次;

 \d  匹配一个数字字符,等价于[0-9]


记录在使用正则表达式时遇到过的坑

1.不需要匹配的用[]包住,尤其是有特殊意义的字符

/(.*?).ico
共找到 4 处匹配:
/x-ico
/images/index/meta1.ico
/x-ico
/images/index/meta1.ico
/(.*?)[.]ico
共找到 2 处匹配:
/x-icon" href="/images/index/meta1.ico
/x-icon" href="/images/index/meta1.ico

2.C#中正则表达式的使用

Regex reg = new Regex(" \\+");
int ipn=reg.Matches(result).Count;

3.一些例子

//判断是否为中文
public static bool IsCN(string strIn)
{
  return Regex.IsMatch(strIn, @"[\u4E00 - \u9FA0]+");
}

//验证用户名
var reg = /^[\u4E00-\u9FA0 a-z A-Z 0-9]{5,10}$/; //中文 英文 数字
var account = $("#Account").val();
if (!reg.test(account))
{
    alert("用户名只能包含字母、数字!");
    return false;
}

//验证邮箱
var email = $("#Email").val();
var regEmail = /^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}$/;
if (!regEmail.test(email))
{
    alert("请输入正确的邮箱!");
    return false;
}

//判断是否为字母、数字,一般的判断
string s = "wwww";
char[] c=s.ToCharArray();
if (c[0] >= '0' && c[0] <= '9')
    Console.WriteLine("第一个字符是数字");
else if (c[0] >= 'A' && c[0] <= 'z')
    Console.WriteLine("第一个字符是字母");
else
    Console.WriteLine("第一个字符是特殊字符");
//正则判断是否为字母
Regex.Matches(ipAddr, "[a-zA-Z]").Count > 0

4.匹配所有的字符串

Regex.Match(res, "flightResultStart=(.|\n)*?}]").Value.Replace("flightResultStart=", "");

5.匹配是否为时间

Regex.IsMatch(time1, @"\d{2}:\d{2}")

6.匹配多项

var resultTable = Regex.Matches(result, "<span class='price' style='width:33px'>(.|\n)*?</b></span>");
foreach (Match item in resultTable)
{
    result = result.Replace(item.Value,item.Value+"<xmp>"+item.Value+"</xmp>");
}

7.匹配一项

string price1 = Regex.Match(item.Value, "<b class=\"qmix3b60ce47\">(.|\n)*?</b>", RegexOptions.IgnoreCase).Groups[1].Value;

8.带标签的匹配

//string Pat = @"<tr><td(.*)>起止日期</td><td(.*)>(?<text1>.*?)</td></tr><tr><td>使用时间</td><td>(?<text2>.*?)</td></tr><tr><td>流量(单位:条)</td><td>(?<text3>.*?)</td></tr><tr><td>登录次数</td><td>(?<text4>.*?)</td></tr><tr><td>错误登录次数</td><td>(?<text5>.*?)</td></tr>";
//Regex ReStop = new Regex(Pat);
//Match MaStop = ReStop.Match(s);
//if (MaStop.Success)
//{
//   rSStop[0] = MaStop.Groups["text1"].Value;
//   rSStop[1] = MaStop.Groups["text2"].Value;
//   rSStop[2] = MaStop.Groups["text3"].Value;
//   rSStop[3] = MaStop.Groups["text4"].Value;
//   rSStop[4] = MaStop.Groups["text5"].Value;
//}

9.判断是否为航班号

public bool isFlightNo(string context)
{
    return Regex.IsMatch(context, @"[A-z]{2}\d{3,4}", RegexOptions.IgnoreCase);
}

10.正则替换

s = Regex.Replace(s, "\\s{3,}", "");

11.^和$的使用

if (!Regex.IsMatch(portHZL1, @"^[[a-zA-Z0-9]+$"))
{
    portHZL1 = "";
}

12.其它使用

var isJingTing = Regex.Matches(result, "<tr>(.|\n)*?</tr>");

string resultinfo = "";
int counts = 0; int num = isJingTing.Count;
foreach (var item in isJingTing)
{
    counts += 1;
    string data1 = ""; data1 = item.ToString();

13.MatchCollection

string pat2 = "name=\"(\\S+)\"";
Regex r2 = new Regex(pat2, RegexOptions.IgnoreCase);
MatchCollection mc2;
mc2 = r2.Matches(InputContent);
if (mc2.Count>0)
{
    postInfo.PostName = mc2[0].Value.Replace("name=\"", "").Replace("\"", "");
}
else
{
    postInfo.PostName = "";
}

14.保留字母和数字

replace(/[^a-z\d]/ig,"")


js正则推荐文章

http://www.cnblogs.com/moqing/p/5665126.html


注:获取数据时,有时可以使用replace和nohtml进行处理,更方便。

最后修改:2016 年 07 月 12 日
如果觉得我的文章对你有用,请随意赞赏