正则表达式练习,持续更新中
发布时间:2020-12-14 02:17:03 所属栏目:百科 来源:网络整理
导读:可访问 http://tool.chinaz.com/regex ,得出以下正则表达式匹配结果 常见正则表达式验证 ^(-){0,1}d+$ 整数^d+$ 正整数^-d+$ 负整数[a-zA-Z0-9] 数字和字符 不包含标点[u4e00-u9fa5] 中文(http://|https://){0,1}[w/.?=]+ 网址^[0-9]+([.][0-9]+)
可访问http://tool.chinaz.com/regex,得出以下正则表达式匹配结果
常见正则表达式验证 ^(-){0,1}d+$ 整数 ^d+$ 正整数 ^-d+$ 负整数 [a-zA-Z0-9] 数字和字符 不包含标点 [u4e00-u9fa5] 中文 (http://|https://){0,1}[w/.?&;=]+ 网址 ^[0-9]+([.][0-9]+)?$ 浮点数 ^([a-zA-Z0-9_.-])+@(([a-zA-Z0-9-])+.)+([a-zA-Z0-9]{2,4})+$ 邮箱地址 [1-9][0-9]{14}([0-9]{2}[0-9xX])? 简单判断15位或18位身份证 [1-9][0-9]{4,9} 判断qq号码 5-10位 <SCRIPT LANGUAGE="JavaScript"> <!-- // input里面不允许包含:初中、中学、初级中学这三个词语 var input = "C 初a中,,,高a中 初级中学"; var r = /(?!.*初中|.*中学|.*初级中学)^.*$/; alert(r.test(input)); //--> </SCRIPT> 匹配两个字符 前面不为数字 后面为字母 [^0-9][a-zA-Z] 我a我2的a%$电b脑131zZ d 等价于 [0-9] w 等价于[0-9a-zA-Z] s 等价于[] 量词 d{6} 表示匹配6个连续的数字 {n}表示之前元素d必须出现n次 d{4,7} 表示匹配4个连续数字到7个连续数字 {m,n}表示之前元素d最少出现m次,最多出现n次 d{4,} 表示匹配等于或大于4个连续数字 {m,}表示之前的元素d最少出现m次,最多无上限 d{0,4} 表示匹配少于或等于4个连续数字 * 等价于 {0,} 之前元素可能出现,也可能不出现,出现次数无上限 + 等价于 {1,} 之前元素至少出现一次,出现次数无上限 ? 等价于 {0,1} 之前元素可能不出现,最多出现一次 量词 d{6} 表示匹配6个连续的数字 {n}表示之前元素d必须出现n次 d{4,最多出现一次 <[^>]+> 表示匹配"<"开始和">"结束 中间不包含">"的至少一个字符的字符串 https? 表示s可以不出现也可以出现 但最多出现一次 结果是http https都能匹配到 httpss匹配不到 https* 表示s可以不出现也可以出现 出现次数无上限 结果是http https httpss httpss...s均可以匹配 多选结构"|" ([1-9]d{14}|[1-9]d{14}d{2}[0-9X]) 可粗略同时匹配15位和18位身份证 表示匹配15位和18位身份证,如果15位 全部由数字组成,首位不能为0 如果18位 前17位全部为数字 末位可能为数字也可能为X 首位不能为0 基本的语法字符 /d 0-9的数字 /D /d的补集(以所以字符为全集,下同),即所有非数字的字符 /w 单词字符,指大小写字母、0-9的数字、下划线 /W /w的补集 /s 空白字符,包括换行符/n、回车符/r、制表符/t、垂直制表符/v、换页符/f /S /s的补集 . 除换行符/n外的任意字符 […] 匹配[]内所列出的所有字符 [^…] 匹配非[]内所列出的字符 定位字符 “定位字符”所代表的是一个虚的字符,它代表一个位置,你也可以直观地认为“定位字符”所代表的是某个字符与字符间的那个微小间隙。 ^ 表示其后的字符必须位于字符串的开始处 $ 表示其前面的字符必须位于字符串的结束处 /b 匹配一个单词的边界 /B 匹配一个非单词的边界 另外,还包括:/A 前面的字符必须位于字符处的开始处,/z 前面的字符必须位于字符串的结束处,/Z 前面的字符必须位于字符串的结束处,或者位于换行符前 重复描述字符 “重复描述字符”是体现正则表达式“很好很强大”的地方之一: {n} 匹配前面的字符n次 {n,} 匹配前面的字符n次或多于n次 {n,m} 匹配前面的字符n到m次 ? 匹配前面的字符0或1次 + 匹配前面的字符1次或多于1次 * 匹配前面的字符0次或式于0次 string str = @"@Beijing|北京|101@Shanghai|上海|102@Tianjin|天津|103@Chongqing|重庆|104@Haerbin|哈尔滨|105@Dalian|大连|106"; Regex reg = new Regex(@"@([^|]*)|([^|]*)|([^@]*)"); //分三组 foreach (Match m in reg.Matches(str)) { string a = string.Format("{0} {1} {2}",m.Groups[1].Value,m.Groups[2].Value,m.Groups[3].Value); Response.Write(m.Value + "<br/>"); //Response.Write(m.Value + "<br/>"); } //正则验证 /* /A 行开始位置 ^ 行开始位置 /z 行结束位置 $ 行结束位置 */ Regex regex = new Regex(@"Ad{4}-d{2}-d{2}z"); string s = "2012-10-08"; // n2012-04-12 false Response.Write(regex.IsMatch(s)); //true Response.Write("<br/><br/>"); //正则提取 数字编号 Regex regex1 = new Regex(@"(d{4})-(d{2})-(d{2})"); //分组获取() 将匹配到4组数据 Match match1 = regex1.Match("2012-10-08 2012-11-28"); while (match1.Success) { Response.Write("date:" + match1.Groups[0].Value); //2012-10-08 Response.Write("year:" + match1.Groups[1].Value); //2012 Response.Write("month:" + match1.Groups[2].Value); //10 Response.Write("day:" + match1.Groups[3].Value); //08 match1 = match1.NextMatch(); Response.Write("<br/>"); } Response.Write("<br/><br/>"); //正则提取 命名分组 Regex regex2 = new Regex(@"(?<year>d{4})-(?<month>d{2})-(?<day>d{2})"); //分组获取() Match match2 = regex2.Match("2012-10-08 2012-11-28"); while (match2.Success) { Response.Write("date:" + match2.Groups[0].Value); //2012-10-08 Response.Write("year:" + match2.Groups["year"].Value); //2012 Response.Write("month:" + match2.Groups["month"].Value); //10 Response.Write("day:" + match2.Groups["day"].Value); //08 match2 = match2.NextMatch(); Response.Write("<br/>"); } Response.Write("<br/><br/>"); //正则替换 Regex regex3 = new Regex(@"(d{4})-(d{2})-(d{2})"); string replacement3 = "$2/$3/$1"; string text3 = "2012-10-08 2012-11-28"; Response.Write(regex3.Replace(text3,replacement3)); // 10/08/2012 11/28/2012 Response.Write("<br/><br/>"); //正则替换 命令分组 Regex regex4 = new Regex(@"(?<year>d{4})-(?<month>d{2})-(?<day>d{2})"); string replacement4 = "${month}/${day}/${year}"; string text4 = "2012-10-08 2012-11-28"; Response.Write(regex4.Replace(text4,replacement4)); // 10/08/2012 11/28/2012 Response.Write("<br/><br/>"); //正则切分 Regex regex5 = new Regex("-"); string text5 = "2012-10-08 2012-11-28"; foreach (string ss in regex5.Split(text5)) { Response.Write(ss + " "); // 2012 10 08 2012 11 28 } <script language="javascript" type="text/javascript"> //验证一 var regex = /d{4}-d{2}-d{2}/; document.writeln(("2012-08-12 2012-09-18".search(regex) == 0) + "<br/>"); //验证二 var regex1 = /d{4}-d{2}-d{2}/; document.writeln(regex1.test("2012-08-12 2012-09-18") + "<br/>") //简单提取 var pattern = /d{4}-d{2}-d{2}/g; // g全局标识 表示进行每个匹配 否则只匹配第一个 var str = "2012-08-12 2012-09-18"; var matchArray = str.match(pattern); for (var i = 0; i < matchArray.length; i++) { document.writeln(matchArray[i] + "<br/>"); } //逐步提取 var pattern1 = /(d{4})-(d{2})-(d{2})/g; var str1 = "2012-08-12 2012-09-18"; while ((matchArray1 = pattern1.exec(str1)) != null) { document.writeln("date:" + matchArray1[0] + "<br/>"); document.writeln("year:" + matchArray1[1] + "<br/>"); document.writeln("month:" + matchArray1[2] + "<br/>"); document.writeln("day:" + matchArray1[3] + "<br/>"); } //简单替换 var regex2 = /(d{4})-(d{2})-(d{2})/g; var replacement = "$2/$3/$1"; document.writeln("2012-08-12".replace(regex2,replacement) + "<br/>"); //正则切分 var regex3 = /s+/; var matchArray2 = "1n2t 3".split(regex3); for (var i = 0; i < matchArray2.length; i++) { document.writeln(matchArray2[i] + "<br/>"); } </script> (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- c# – 如何在DLL中绕过VC运行时要求?
- C语言求完数(完全数)(详解版)
- ajaxfileupload.js 支持chrome,fireox,ie
- postgresql – 在Heroku postgres上设置语言环境
- c# 获取CookieContainer的所有cookies函数代码
- 在swift中比较单个if结构中的非可选bool有什么问题
- Dreamweaver/Flash CS4安装后打开时提示此产品的许可已停止
- Flex4之元数据标签:[ArrayElementType] [Bindable] [Defau
- grep, egrep, 基本正则表达式及扩展表达式;
- 依赖倒置、控制反转和依赖注入辨析