JavaScript:正则表达式的应用

应用正则表达式对象RegExp

创建正则表达式

JavaScript中使用RegExp对象来表述一个正则表达式。使用正则表达式之前首先要创建一个RegExp对象

var oRexp = new RegExp(pattern,[flag]);

说明:

  pattern:为必选项,表示以字符串格式表示的正则表达式。

  flag:为可选项,是匹配选项,可用值如下:

  

 修饰符 描述
i 执行对大小写不敏感的匹配。
g 执行全局匹配(查找所有匹配而非在找到第一个匹配后停止)。
m 执行多行匹配。

用户不一定要显示的创建RegExp,还可以隐式地创建RegExp对象

var oRegp = /pattern/[flag]

注意:

  使用显式格式创建RegExp对象时,正则表达式中的“\”,要用“\\”来代替,且表达式开头和结尾不需要书写“/”。

判断字符串是否存在匹配内容

说明:

  test() 方法用于检测一个字符串是否匹配某个模式,如果字符串中含有匹配的文本,则返回 true,否则返回 false。

实例:

  检测用户输入的邮箱是否匹配模式

<!DOCTYPE html>
<html lang="en">
<head>
<title></title>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link href="css/style.css" rel="stylesheet">
</head>
<body>
<form>
<input name="email" type="text" id="email">
<input name="check" type="button" value="检测" onclick="checkMail()">
</form>
<script>
function checkMail()
{
var objReg =/\w+[@]{1}\w+[.]{1}\w+/ //模式
var email = document.getElementById("email").value;
if(objReg.test(email))    //利用test进行匹配检测,返回true或这false
{
alert("Email符合规范")
}else{
alert("Email不符合规范")
}
}
</script>
</body>
</html>

对字符串进行匹配检测  

说明:

  exec()方法,通过对指定的字符串进行一次匹配检测,获取字符串中第一个与正则表达式所匹配的内容,并将该匹配内容及其子匹配的结果存储到返回的数组中。

实例:

  检测手机号,并将第一次匹配成功的内容及其子匹配的结果存储到返回的数组中。

        <script>
var objReg =/1[35](\d)(\d{8})/g;
var ostring="我的电话13111111111 它的电话15222222222"
var arr=objReg.exec(ostring);
for(var i=0;i<arr.length;i++)
{
document.write(arr[i]);
}
</script>

说明:

  这里只有第一次匹配到的,即这个电话,虽然也符合,但是这个方法只进行一次匹配。

替换字符串中的指定内容

说明:

  replace()方法可以用指定的子字符串替换掉字符串中与指定额正则表达式相匹配的内容。

实例:

  将所有数字变成X


        <script>
var objReg =/\d/g;
var ostring="我的电话13111111111 它的电话15222222222"
document.write(ostring.replace(objReg,'X'));
</script>



匹配处理结果

在JavaScript中,使用正则表达式进行检索后,匹配结果将保存在集合中。本节将讲解该集合中的各种处理,如获取匹配位置、获取子匹配结果、获取匹配索引。

获取字符串中所有的匹配信息

说明:

  String.match()方法返回一个数组,数组存储了字符串中所有的匹配信息。

实例:

  匹配所有第二个字母为o的单词

        <script>
var objReg =/\wo(\w+)?/g;  //所有第二个字母为0的单词
var ostring="Do you lova MS?"
var arr = ostring.match(objReg);
if(arr!=null)
{
for(var i=0;i< arr.length;i++)
{
document.write("<li>"+arr[i])
}
}
</script>

获取第一次匹配成功的起始地址

说明:

  String.search()方法是与指定的正则表达式相比较,以得到与之相匹配的内容第一次出现时的位置。

实例:

  检测第一次出现ABCBA类似形式的字串位置

代码:
<script>
var objReg =/(\d)(\d)\d\2\1/;
var ostring="11010111"
var pos = ostring.search(objReg);
if(pos!=-1)
{
var content = objReg.exec(ostring);
alert("找到了,位置是"+pos+" 内容是"+content[0]);
}
</script>
效果:
  

补充:

说明:

  这里用到了 后向引用 

  • 当一个正则表达式被分组之后,每一个组会自动被赋予一个组号,该组号可以代表该组的表达式。
  • 分组的编制规则:从左至右,以左括号为标志,第一个分组为1,第二个分组为2,以此类推。
  • 反向引用提供了查找重复字符组的方便方法。它可被认为是再次匹配同一个字符串的快捷指令。

第二种方式:

  RegExp.index:静态属性,返回字符串第一次匹配出现的起始位置  

  


 

JavaScript:学习笔记(3)——正则表达式的应用的更多相关文章

  1. javascript学习笔记(四) Number 数字类型

    数字格式化方法toFixed().toExponential().toPrecision(),三个方法都四舍五入 toFixed() 方法指定小数位个数  toExponential() 方法 用科学 ...

  2. Javascript学习笔记四——操作表单

    Javascript学习笔记 大多网页比如腾讯,百度云之类的需要登陆,用户输入账号密码就可以登陆,那么浏览器是如何获取用户的输入的呢?今天就记录一下操作表单. 操作表单与操作DOM是差不多的,表单本身 ...

  3. Java程序猿的JavaScript学习笔记(汇总文件夹)

    最终完结了,历时半个月. 内容包含: JavaScript面向对象特性分析,JavaScript高手必经之路. jQuery源代码级解析. jQuery EasyUI源代码级解析. Java程序猿的J ...

  4. Java程序猿的JavaScript学习笔记(8——jQuery选择器)

    计划按例如以下顺序完毕这篇笔记: Java程序猿的JavaScript学习笔记(1--理念) Java程序猿的JavaScript学习笔记(2--属性复制和继承) Java程序猿的JavaScript ...

  5. Java程序猿JavaScript学习笔记(2——复制和继承财产)

    计划和完成在这个例子中,音符的以下序列: Java程序猿的JavaScript学习笔记(1--理念) Java程序猿的JavaScript学习笔记(2--属性复制和继承) Java程序猿的JavaSc ...

  6. Java程序猿的JavaScript学习笔记(3——this/call/apply)

    计划按例如以下顺序完毕这篇笔记: Java程序猿的JavaScript学习笔记(1--理念) Java程序猿的JavaScript学习笔记(2--属性复制和继承) Java程序猿的JavaScript ...

  7. Java程序猿JavaScript学习笔记(4——关闭/getter/setter)

    计划和完成这个例子中,音符的顺序如下: Java程序猿的JavaScript学习笔记(1--理念) Java程序猿的JavaScript学习笔记(2--属性复制和继承) Java程序猿的JavaScr ...

  8. Java程序猿JavaScript学习笔记(14——扩大jQuery UI)

    计划和完成这个例子中,音符的顺序如下: Java程序猿的JavaScript学习笔记(1--理念) Java程序猿的JavaScript学习笔记(2--属性复制和继承) Java程序猿的JavaScr ...

  9. JavaScript学习笔记之数组(二)

    JavaScript学习笔记之数组(二) 1.['1','2','3'].map(parseInt) 输出什么,为什么? ['1','2','3'].map(parseInt)//[1,NaN,NaN ...

随机推荐

  1. 创建Mat

    #include<opencv2/opencv.hpp> #include<iostream> #include<cassert> #include<vect ...

  2. php类库PHP QR Code 二维码

    php类库PHP QR Code 二维码 php类库PHP QR Code 二维码 php类库PHP QR CodePHP QR Code is open source (LGPL) library ...

  3. cf #363 b

    B. One Bomb time limit per test 1 second memory limit per test 256 megabytes input standard input ou ...

  4. C# 子类实例化过程

    刚研究了一下C#子类实例化的过程. 首先我遇到了如下一个问题: 有类A,里面写了一个有参的构造函数,并没有提供默认的无参构造函数.现在类B继承了类A,没有写任何的构造函数. 这时如果想实例化类B就会产 ...

  5. Yarn源码分析之MapReduce作业中任务Task调度整体流程(一)

    v2版本的MapReduce作业中,作业JOB_SETUP_COMPLETED事件的发生,即作业SETUP阶段完成事件,会触发作业由SETUP状态转换到RUNNING状态,而作业状态转换中涉及作业信息 ...

  6. 解决Bootstrap 试用手机端 布满全屏

    @media (max-width: 767px) { body{ margin: 0; padding: 0; } } @media (max-width: 970px) { body{ margi ...

  7. 目前国际上所用云计算平台IaaS、PaaS、SaaS简介

    随着云计算这个概念越来越为人所熟知,企业对云计算的重视程度也在日趋加深.这不仅是一种潮流,更体现了一种需求——数字化.现代化.科技化的整体需求.如今市场上云计算的运营商更是风起云涌,服务种类更是丰富繁 ...

  8. window7电脑git设置快捷命令

    平常git开发的一些命令来回重复的敲,有点麻烦,这里给git的常用的命令设置了快捷键,很方便开发. 我这个是window7环境,下面开始 1.home键 + r 打开运行窗口,点击确定进入黑窗口 2. ...

  9. linux安装consul集群

    一.集群规划 consul借助agent来运行,类似elk的logstash agent 或 zabbix监控系统的agent , 每个需要被发现的服务上,通过consul agent client ...

  10. Nginx nginx.conf配置文件详细说明

    在此记录下Nginx服务器nginx.conf的配置文件说明, 部分注释收集与网络. #运行用户user www-data;    #启动进程,通常设置成和cpu的数量相等worker_process ...