基础知识
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进行处理,更方便。