内容介绍----正则表达式的详解

正则表达式对象:

  • RegExp对象方法
我们来看一下RegExp对象都有哪些方法
例子不举了,很简单
  • String 对象与正则表达式有关的方法
这四个方法是属于String对象的,不是属于RegExp对象的
search()方法

<script type="text/javascript">var str="Visit W3School!"
document.write(str.search(/W3School/))</script>
输出 6;
match()方法

<!DOCTYPE html>
<html>
<head>
<script language="javascript">  function test1(){//match()方法var con=content.innerText;var myReg=/abc/gi; res = con.match(myReg);for(var i=0;i<res.length;i++){window.alert(i+" "+res[0]);}}
</script>
</head>
<body>
<textarea id="content" rows="10" cols="20">
abcasdlfkjaslkabca;lkfjasl;dkabcaslkfjs;alkdfj
</textarea>
<input type="button" value="测试" οnclick="test1()"/>
</body>
</html>
replace()方法
<!DOCTYPE html>
<html>
<head>
<script language="javascript">  //replace()方法function test1(){var con=content.innerText;//把四个数,换成 这里原来有四个数var myReg=/abc/gi; var newCon = con.replace(myReg,"这里原来有四个数");content.innerText=newCon;}
</script>
</head>
<body>
<textarea id="content" rows="10" cols="20">
abcasdlfkjaslk1234abca;lkfjas4345657l;dkabc56878aslkfjs;alkdfjsadjlfkjsdkflj;sldk
</textarea>
<input type="button" value="开始替换" οnclick="test1()"/>
</body>
</html>

split()方法

这里不讲了
  • RegExp对象的属性
举例说明:
<!DOCTYPE html>
<html>
<head>
<script language="javascript">  //index,leftContext,rightContext 三个属性function test1(){var con=content.innerText;//把四个数,换成 这里原来有四个数var myReg=/abc/gi; while(res=myReg.exec(con)){window.alert("index:"+RegExp.index+" leftContext:"+RegExp.leftContext+" rightContext:"+RegExp.rightContext);}}
</script>
</head>
<body>
<textarea id="content" rows="10" cols="20">
abcasdlfkjaslk1234abca;lkfjas4345657l;dkabc56878aslkfjs;alkdfjsadjlfkjsdkflj;sldk
</textarea>
<input type="button" value="测试" οnclick="test1()"/>
</body>
</html>
注意这个source,source就是可以看一下你当前是对那个字符串进行操作,这个不举例了
这个很重要,
子表达式,捕获,反向引用
举例解决第一个问题:
<!DOCTYPE html>
<html>
<head>
<script language="javascript">  function test1(){var con=content.innerText;var myReg=/(\d)(\d)\2\1/gi; //解释:看后面while(res=myReg.exec(con)){window.alert(res[0]);}}
</script>
</head>
<body>
<textarea id="content" rows="10" cols="20">
289472393443982374982374788729837491898892983754985
</textarea>
<input type="button" value="测试" οnclick="test1()"/>
</body>
</html>
看下图对 子表达式,捕获,反向引用的解释
下面再看几个例子:
<!DOCTYPE html>
<html>
<head>
<script language="javascript">  function test1(){var con=content.innerText;//查找类似于 aabbccdd 的数字var myReg1=/(\d)\1(\d)\2(\d)\3(\d)\4/gi; while(res=myReg1.exec(con)){window.alert(res[0]);}//查找类似于 12321-333999111 这样的号码,要求满足前面是一个五位数,然后是一个-号//然后是一个九位数,连续的每三位要相同//下面 4 种方法都是可以的//var myReg2=/(\d){5}-(\d)\2\2(\d)\3\3(\d)\4\4/gi; //var myReg2=/(\d){5}(-)(\d)\3\3(\d)\4\4(\d)\5\5/gi; //var myReg2=/(\d){5}(-)((\d)\4\4){3}/gi;  var myReg2=/(\d){5}-((\d)\3\3){3}/gi;  //注意:这里不是((\d)\2\2){3},反向捕获是以左括号为标志的,前面有几个左括号,那么就反向捕获第几个子表达式的内容while(res=myReg2.exec(con)){window.alert(res[0]);}}
</script>
</head>
<body>
<textarea id="content" rows="10" cols="20">
289472393443981122334423755667788412321-33399911198237478875241-99966655529837491898892983754985
</textarea>
<input type="button" value="测试" οnclick="test1()"/>
</body>
</html>
特别注意:反向捕获是以左括号为标志的,前面有几个左括号,那么就反向捕获第几个子表达式的内容
  • 元字符
var myReg1=/(\w)\1{2}/gi; 这个表达式和上图中红色区域的效果是一样的
代码:
<!DOCTYPE html>
<html>
<head>
<script language="javascript">  function test1(){var con=content.innerText;var myReg1=/(\w)\1{2}/gi; //对这个表达式要好好理解while(res=myReg1.exec(con)){window.alert(res[0]);}}
</script>
</head>
<body>
<textarea id="content" rows="10" cols="20">
289472393fff555443sdfkjghkj98112233442375hkj566
</textarea>
<input type="button" value="测试" οnclick="test1()"/>
</body>
</html>
var myReg1=/^han/gi;  //匹配字符串中的开头的han
var myReg2=/han$/gi;  //匹配字符串中的最后的han
这个比较重要
代码如下:
<!DOCTYPE html>
<html>
<head>
<script language="javascript">  function test1(){var con=content.innerText;var myReg1=/^[a-zA-z0-9_-]+@([a-zA-z0-9]+\.)+(com|cn|net|org)$/gi; var res=myReg1.exec(con)if(res){window.alert("是邮件");window.alert(res[0]);}else {window.alert("不是邮件");}}</script>
</head>
<body>
<textarea id="content" rows="10" cols="20"></textarea>
<input type="button" value="测试" οnclick="test1()"/><br/>
</body>
</html>

韩顺平 javascript教学视频_学习笔记34_js正则表达式详解相关推荐

  1. 韩顺平 javascript教学视频_学习笔记20_多态经典案例_补讲闭包细节

    多态经典案例 经典案例,看代码: <html> <head> <script language="javascript"> function M ...

  2. 韩顺平 javascript教学视频_学习笔记17_js超级玛丽小游戏

    采用面向对象思想设计超级马里奥游戏人物 怎么用通过按键,来控制图片的位置 这个小游戏,用面向对象会很方便,不用面向对象会很麻烦很麻烦,比如以后要讲解的坦克大战的游戏,要是用纯的面向过程或函数式的方式写 ...

  3. ELK学习笔记之Logstash详解

    0x00 Logstash概述 官方介绍:Logstash is an open source data collection engine with real-time pipelining cap ...

  4. expect学习笔记及实例详解【转】

    1. expect是基于tcl演变而来的,所以很多语法和tcl类似,基本的语法如下所示: 1.1 首行加上/usr/bin/expect 1.2 spawn: 后面加上需要执行的shell命令,比如说 ...

  5. Java中大数据数组,Java基础学习笔记之数组详解

    摘要:这篇Java开发技术栏目下的"Java基础学习笔记之数组详解",介绍的技术点是"java基础学习笔记.基础学习笔记.Java基础.数组详解.学习笔记.Java&qu ...

  6. oracle scn 重置,学习笔记:Oracle SCN详解 SCN与Oracle数据库恢复的关系

    天萃荷净 分享一篇关于Oracle SCN的详解,介绍SCN与Oracle数据库恢复的关系和SCN在数据库中的作用 一.为什么需要System checkpoint SCN号与Datafile Che ...

  7. qstring如何初始化_学习QT之QString详解

    学习QT之QString详解 QString类保存16位Unicode值,提供了丰富的操作.查询和转换函数.该类还进行了使用隐式共享.高效的内存分配策略等多方面的优化. 一.字符串常用操作 字符串的操 ...

  8. CSS入门学习笔记(案例+详解)

    CSS入门学习笔记 一.CSS简介 1.什么是CSS? 2.为什么使用CSS? 3.CSS的作用 二.CSS语法 1.CSS基础语法 2.CSS注释语法 3.CSS应用方法 三.CSS选择器 1.元素 ...

  9. 【Python全栈100天学习笔记】Day37MySQL详解(sql语句基本操作含索引、视图、存储过程)

    SQL详解 基本操作 我们通常可以将SQL分为三类:DDL(数据定义语言).DML(数据操作语言)和DCL(数据控制语言).DDL主要用于创建(create).删除(drop).修改(alter)数据 ...

最新文章

  1. Webwork 学习之路【07】文件上传下载
  2. github 克隆项目过慢
  3. 【转】为什么要进行傅立叶变换?傅立叶变换究竟有何意义?如何用Matlab实现快速傅立叶变换?...
  4. Raw Socket编程
  5. hdu--1075--字典树||map
  6. linux中如何在文件中查找文件,linux下find(文件查找)命令的用法总结
  7. c语言不定参数个数,C语言中不定参数的实现
  8. 20145302张薇《Java程序设计》第十周学习总结
  9. Linux:计划任务之at
  10. 之江天枢正式开源!一文详解天枢核心优势
  11. QQ资料清空php源码,[php源码][QQ玫瑰小镇]一键收铲种,php网页版
  12. wxpython4下载_Linux 安装 wxPython4.0.4
  13. 计算机语言发展ppt,计算机语言的发展.ppt
  14. 【读书笔记】《人性的弱点》——卡耐基
  15. sql分组排序, 分页查询
  16. 【蓝桥杯Java组】一学就会的小技巧(五):矩阵快速幂
  17. 域名投毒,DNS污染,域名欺骗,其实就是域名污染。
  18. cearte-react-app中craco中优雅引入svg【自定义宽、高、颜色,仅需5步】
  19. 解决99%的卡刷包无法通过ROM制作工具修改的问题
  20. 1分钟链圈|腾讯区块链(天津)被责令更名;Casper更新可能导致社区再次分裂...

热门文章

  1. 数控直流电压源的设计与制作
  2. 【N32G457 】基于RT-Thread和N32G457的传送带物品计数器
  3. 大数据和云计算技术周报(第0期)
  4. DaisyDisk for Mac(系统清理软件)中文版
  5. 网页版《2048游戏》
  6. HTML设计抖音页面,CSS3解析抖音LOGO制作的方法步骤
  7. 计算机专业三本院校的全国排名2015,全国理科三本大学排名2015年最新
  8. YouCompleteMe(YCM)安装时遇到的问题(能遇到的几乎都遇到了)
  9. 基本的python内置函数str(x)_Python内置函数(12)——str
  10. 腾讯云大学大咖分享 | 探索云直播技术