正则表达式
来源:互联网 发布:dijkstra 堆优化 编辑:程序博客网 时间:2024/06/05 10:50
1.正则表达式基本概念
所谓正则表达式就是用某种模式去匹配一类字符串的一个公式,反应到js中就是一个RegExp对象。
RegExp 对象:表示正则表达式,它是对字符串执行模式匹配的强大工具。
2.快速入门案例
给你一个字符串(或一篇文章),请你找出所有四个数字连在一起的字串?
代码:
<html><head><link rel="stylesheet" type="text/css" href="form.css"><script type="text/javascript">function test1(){ //得到用户的内容 var con=content.value; //window.alert(con); var myReg=/(\d){4}/gi;//这是一个正则表达式对象,可以检索四个连续的数字 //var myReg=new RegExp("(\\d){4}","gi"); while(res=myReg.exec(con)){ //res是检索处理的结果,但是一个结果就对应一个数组,该数组的res[0]就是找到的文本 window.alert("找到"+res[0]); }}</script></head><body><textarea id="content" rows="10" cols="20"></textarea><input type="button" onclick="test1()" value="测试"/></body></html>
小结:
创建一个RegExp对象有两种方法
(1)隐式创建 var reg=/正则表达式/gi [g表示全局匹配,i表示区分大小写]
(2)显示创建 var reg=new RegExp(“正则表达式”,“gi”);
3.String对象和正则表达式相关的方法
(1)test
(2)match
(3)replace
(4)split
//matchfunction test2(){ var con=content.value; var myreg=/abc/gi; res=con.match(myreg); for(var i=0;i<res.length;i++){ window.alert(i+" "+res[0]); }}
//testfunction test1(){ var con=content.value; var myreg=/abc/gi; if(myreg.test(con)){ window.alert("有abc"); }else{ window.alert("没有abc"); }}
//replace函数function test3(){ var con=content.value; var myReg=/(\d){4}/gi; //把四个数,换成 var newCon=con.replace(myReg,"这里原来是四个数"); content.value=newCon; }
4.子表达式和捕获,反向引用的概念
案例:找到第一位与第四位相同,第二位和第三位相同的数
function test5(){ var con=content.value; //找abba型数字 //var myReg=/(\d)(\d)\2\1/gi;//(\d)第一个字表达式,(\d)第二个子表达式,\2(\1)反向引用第二个(第一个)子表达式的内容 //找aabbccdd型数字 //var myReg2=/(\d)\1(\d)\2(\d)\3(\d)\4/gi; //找12321-333999111型的数字,要求满足前面是一个五位数,然后一个-号,然后是一个九位数,连续的每三位要相同 var myReg3=/(\d){5}-(\d)\2\2(\d)\3\3(\d)\4\4/gi; while(res=myReg.exec(con)){ window.alert(res[0]); }}
5.元字符
(1)限定符:用于指定其前面的字符和组合项连续出现多少次
function test6(){ var con=content.value; //找到三个1的组合 //var myReg=/1{3}/gi; //找到最少三个1最多四个1的组合 //var myReg=/1{3,4}/gi; //+表示1出现1次到任意多次 //var myReg=/1+/gi; //?表示1出现0次到1次 var myReg=/a1?/gi; while(res=myReg.exec(con)){ window.alert(res[0]); }}
(2)字符匹配符
\d:表示可以匹配0-9的任意一个数字
\D:表示可以匹配不是0-9中的任意一个数字
\w:匹配任意英文字符、数字和下划线
\W:与\w相反
等等还有很多可以查手册。
(3)定位符:规定要匹配的字符串出现的位置
^:匹配目标字符串的开始位置
$:匹配目标字符串的结束位置
(4)选择匹配符
var myReg=/(han|汉)/gi;
6.综合案例
验证电子邮件格式是否合法:
(1)只能有一个@
(2)@前面是用户名,可以是a-z A-Z 0-9 _-字符
(3)@后面是域名,例如sohu.com并且域名只能是英文字母
//验证输入的字符串是不是一个电子邮件function test7(){ var con=content.value; var myReg=/^[a-zA-Z0-9_-]+@([a-zA-Z0-9]+\.)+(com|cn|net|org)$/gi; if(myReg.test(con)){ window.alert("是邮件"); }else{ window.alert("不是邮件"); } //while(res=myReg.exec(con)){ // window.alert(res[0]); //}}
阅读全文
0 0
- 【正则表达式】正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- KMP算法--[hiho1015]
- osmdroid API解读(二)
- [2017纪中10-23]公交运输 DP+斜率(玄学)优化
- 如果用laravel框架出现$_GET的数据的变量名不照应
- Map哈希表的用法
- 正则表达式
- [NOIP2013] 货车运输
- 人名中间的小圆点的实现方式
- T-SQL 之数据定义语句(DDL)
- ARM裸机串口
- unity shader _MainTex_TexelSize 和 UNITY_UV_STARTS_AT_TOP 的作用
- BZOJ 1978: [BeiJing2010]取数游戏 game
- python的判断和循环
- MySQL行号的实现