JavaScript:学习笔记(3)——正则表达式的应用
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)——正则表达式的应用的更多相关文章
- javascript学习笔记(四) Number 数字类型
数字格式化方法toFixed().toExponential().toPrecision(),三个方法都四舍五入 toFixed() 方法指定小数位个数 toExponential() 方法 用科学 ...
- Javascript学习笔记四——操作表单
Javascript学习笔记 大多网页比如腾讯,百度云之类的需要登陆,用户输入账号密码就可以登陆,那么浏览器是如何获取用户的输入的呢?今天就记录一下操作表单. 操作表单与操作DOM是差不多的,表单本身 ...
- Java程序猿的JavaScript学习笔记(汇总文件夹)
最终完结了,历时半个月. 内容包含: JavaScript面向对象特性分析,JavaScript高手必经之路. jQuery源代码级解析. jQuery EasyUI源代码级解析. Java程序猿的J ...
- Java程序猿的JavaScript学习笔记(8——jQuery选择器)
计划按例如以下顺序完毕这篇笔记: Java程序猿的JavaScript学习笔记(1--理念) Java程序猿的JavaScript学习笔记(2--属性复制和继承) Java程序猿的JavaScript ...
- Java程序猿JavaScript学习笔记(2——复制和继承财产)
计划和完成在这个例子中,音符的以下序列: Java程序猿的JavaScript学习笔记(1--理念) Java程序猿的JavaScript学习笔记(2--属性复制和继承) Java程序猿的JavaSc ...
- Java程序猿的JavaScript学习笔记(3——this/call/apply)
计划按例如以下顺序完毕这篇笔记: Java程序猿的JavaScript学习笔记(1--理念) Java程序猿的JavaScript学习笔记(2--属性复制和继承) Java程序猿的JavaScript ...
- Java程序猿JavaScript学习笔记(4——关闭/getter/setter)
计划和完成这个例子中,音符的顺序如下: Java程序猿的JavaScript学习笔记(1--理念) Java程序猿的JavaScript学习笔记(2--属性复制和继承) Java程序猿的JavaScr ...
- Java程序猿JavaScript学习笔记(14——扩大jQuery UI)
计划和完成这个例子中,音符的顺序如下: Java程序猿的JavaScript学习笔记(1--理念) Java程序猿的JavaScript学习笔记(2--属性复制和继承) Java程序猿的JavaScr ...
- JavaScript学习笔记之数组(二)
JavaScript学习笔记之数组(二) 1.['1','2','3'].map(parseInt) 输出什么,为什么? ['1','2','3'].map(parseInt)//[1,NaN,NaN ...
随机推荐
- layui动态渲染生成select的option值
脚本语言:设定默认值:直接拼接,然后根据返回值渲染select// 动态渲染脚本类型下拉框 // 1.发送ajax请求得到data // 2.将data渲染到页面上 function getDataL ...
- uboot下tftp传输文件
uboot下通过tftp工具传输文件,tftp与ftp是完全不同的工具或协议. 1) 下载并安装程序 sudo apt-get install tftp-hpa tftpd-hpa tftp-hpa是 ...
- ionic入坑记记录
0.java1.8安装各种环境的配置 1.没有安装过npm 1.1 安装nodejs自带此物. 1.2 不希望npm install -g都在c盘.设置全局路径 path中是X:\某个文件夹\你的文件 ...
- Fantasy of a Summation n个数,k层重复遍历相加。求它的和%mod的值;推导公式+快速幂
/** 题目:Fantasy of a Summation 链接:https://vjudge.net/contest/154246#problem/L 题意:n个数,k层重复遍历相加.求它的和%mo ...
- Harmonic Number 求Hn; Hn = 1 + 1/2 + 1/3 + ... + 1/n; (n<=1e8) T<=1e4; 精确到1e-8; 打表或者调和级数
/** 题目:Harmonic Number 链接:https://vjudge.net/contest/154246#problem/I 题意:求Hn: Hn = 1 + 1/2 + 1/3 + . ...
- hadoop2.4完全分布式部署
hadoop2.4完全分布式部署 感谢:http://blog.csdn.net/licongcong_0224/article/details/12972889 集群组成: 两台red hat en ...
- laravel Lumen邮箱发送配置
Lumen 中配置邮件 https://blog.csdn.net/glovenone/article/details/54344013 Lareval 比 Lumen 多了一个步骤 https:// ...
- IOS开发UI篇之──自定义加载等待框(MBProgressHUD)
本文转载至 http://blog.csdn.net/xunyn/article/details/8064984 原文地址http://www.189works.com/article-89289 ...
- python中json操作
1.写操作.json文件dumps().dump()函数 d = { 'zll': { 'addr': '北京', 'age': 28 }, 'ljj': { 'addr': '北京', 'age': ...
- Java 基础巩固:装箱拆箱 你真的熟悉吗
先考两道题: Integer a1 = 300; Integer a2 =300; System.out.print(a1 == a2); Integer b1 = 1; Integer b2 = 1 ...
