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 ...
随机推荐
- HDU 5355 Cake(2015多校第六场,搜索 + 剪枝)
Cake Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others) Total Sub ...
- centos 源码安装apache 之apr、apr-util
apr 和 apr-util官网下载地址: http://apr.apache.org/download.cgi 安装顺序是先安装apr然后再安装 apr-util,因为安装apr-util需要apr ...
- hdu5794 A Simple Chess 容斥+Lucas 从(1,1)开始出发,每一步从(x1,y1)到达(x2,y2)满足(x2−x1)^2+(y2−y1)^2=5, x2>x1,y2>y1; 其实就是走日字。而且是往(n,m)方向走的日字。还有r个障碍物,障碍物不可以到达。求(1,1)到(n,m)的路径条数。
A Simple Chess Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)To ...
- Vim使用技巧(2) -- 插入模式技巧 【持续更新】
组合快捷键 Ctrl + h //删除前一个字母(同退格键) Ctrl + w //删除前一个单词 Ctrl + u //删除到行首 Esc //切换到普通模式 Ctrl + [ //切换到普通模式 ...
- LeetCode递归 -2(Recursion) 培训专题 讲解文章翻译 (附链接) (2019-04-09 15:50)
递归 - 空间复杂度 在本文中, 我们将讨论如何分析递归算法的空间复杂度. 在计算递归算法的空间复杂度时,最需要考虑的两个部分就是: 递归相关空间 (recursion related space) ...
- Hibernate使用注释
可以使用注释创建hibernate应用程序. 有许多注释可用于创建hibernate应用程序,如@Entity,@Id,@Table等. Hibernate注释基于JPA 2规范,并支持所有功能.所有 ...
- (转载)Unity中解析ini配置文件----INIParser
大家好,我是孙广东. 转载请注明出处:http://blog.csdn.net/u010019717 更全的内容请看我的游戏蛮牛地址:http://www.unitymanual.com/spac ...
- SlidingMenu——使用前的配置
一: 首先下载lib:SlidingMenu.然后将起导入eclipse中,然后将其clean一下,重新生成R文件. 二: 因为SlidingMenu依赖ActionBarSherlock,所以需要下 ...
- C++中计算矩阵的行列式
使用eigen库: 求行列式: #include <iostream> #include <Eigen/Dense> using namespace std; using na ...
- orm查询基本操作
orm ----关系对象模型 orm 的查询两种操作 1.基于对象的查询 oneTo one 一对多 和多对多 对象.关联字段 对象.表名(_set)) 2.基于QUERYset的查询 双下划线即为 ...
