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. java - day07 - PrimeNum

    判断质数 package day06; import java.util.Scanner; //验证质数 public class primeNum { public static void main ...

  2. Python开发qq批量登陆

    操作步骤: 1.打开qq软件 2.移动鼠标到qq输入处 3.在输入处,点击鼠标,输入帐号 4.模拟按下tab键,输入密码,模拟点回车登录 #coding=utf-8 import os import ...

  3. spark单机模式

    1.下载spark,解压2.复制conf/spark-env.sh和conf/log4j.properties cp spark-env.sh.template spark-env.sh cp log ...

  4. Java基础06 组合(转载)

    在一个新类的定义中使用其他对象.这就是组合(composition).组合是在Java中实现程序复用(reusibility)的基本手段之一.   组合与"has-a" 一个对象是 ...

  5. 获取jsapi_ticket

    String accessTokenUrl = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&a ...

  6. 第一百九十八节,jQuery EasyUI,ProgressBar(进度条)组件

    jQuery EasyUI,ProgressBar(进度条)组件 学习要点: 1.加载方式 2.属性列表 3.事件列表 4.方法列表 本节课重点了解 EasyUI 中 ProgressBar(进度条) ...

  7. Spring4 MVC REST服务使用@RestController实例

    在这篇文章中,我们将通过开发使用 Spring4 @RestController 注解来开发基于Spring MVC4的REST风格的JSON服务.我们将扩展这个例子通过简单的注释与JAXB标注域类支 ...

  8. redhat6.5安装ntfs-3g rpm来支持ntfs文件系统挂载

    linux安装ntfs-3g模块来支持ntfs文件系统挂载 所需包 fuse-2.9.3.tar.gz ntfs-3g_ntfsprogs-2011.4.12.tgz step1. 解压fuse-2. ...

  9. asp.net网站底部的版权信息实现代码且可维护

    网站底部的版权信息在特殊情况还是比较重要的所以在实现的时候一定要尽可能的做到可维护性,接下来将介绍一些技巧可达到可维护效果,感兴趣的你可不要错过了哈 一个大网站页面很多,如果每个版权信息直接写在下面, ...

  10. ios [__NSCFNumber isEqualToString:]: unrecognized selector sent to instance 0x7a97d4c0'报错

    今天接口由get换成post,我去改进行登录但出现了这个错误,首先出错先看能不能与服务器交互,能不能获得数据,其次,获得的数据是不是你想要的,记住,首先出错要想到是自己的问题,还有就是程序崩了要学会自 ...