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. NPOI读取操作excel

    .读取using (FileStream stream = new FileStream(@"c:\客户资料.xls", FileMode.Open, FileAccess.Rea ...

  2. Android 之布局

    1.RelativeLayout相对布局 a).第一类:属性值为true或false android:layout_centerHrizontal 水平居中 android:layout_center ...

  3. linux 一行一行的读取文件

    #!/bin/bash #reading data from a file count= cat test1 | while read line do echo "Line $count: ...

  4. RTT常用数据类型

    RTT常用数据类型定义在rtdef.h中 /* RT-Thread basic data type definitions */ typedef signed char rt_int8_t; /**& ...

  5. Oracle Parallel模式

    一.Parallel 1. 用途 强行启用并行度来执行当前SQL.这个在Oracle 9i之后的版本可以使用,之前的版本现在没有环境进行测试.也就是说,加上这个说明,可以强行启用Oracle的多线程处 ...

  6. 有向图 加最少的边 成为强连通分量的证明 poj 1236 hdu 2767

    poj 1236: 题目大意:给出一个有向图, 任务一: 求最少的点,使得从这些点出发可以遍历整张图  任务二: 求最少加多少边 使整个图变成一个强连通分量. 首先任务一很好做, 只要缩点 之后 求 ...

  7. Wireshark使用注意事项

    一直在使用老板的Wireshark,因为4G网络的逐步开通,越来越须要新版Wireshark来解析一些数据包. 在更换了新Wireshark的1.11.3后发现原来能够解析Gb口数据的NSIP不见了 ...

  8. C++11写算法之选择排序

    选择排序,顾名思义,指从数组后面将最小的值找出来,然后与最前面(指当前位置)值进行交换. 时间复杂度:O(n^2) 空间复杂度:O(1) 此处应用了C++11的auto , lambda , stat ...

  9. PHPStorm2017去掉参数提示 parameter name hints

    JetBrains 的各种语言的 IDE 都灰常灰常好用, 个个都是神器, PHPStorm 作为PHP开发的神器也不必多说了 今天升级到 PHPStorm 2017.1 发现增加了好些新功能, 有个 ...

  10. CodeIgniter框架——知识要点汇总

    NO1.学习要点: 一.CodeIgniter 框架的简介 二.CodeIgniter 框架的安装 三.CodeIgniter 框架的目录结构分析 四.CodeIgniter 框架是如何工作的? 五. ...