详解JavaScript正则表达式之RegExp对象


Posted in Javascript onDecember 13, 2015

一、RegExp对象概述
       RegExp对象表示正则表达式,RegExp是正则表达式的缩写,它是对字符串执行模式匹配的强大工具。RegExp对象用于规定在文本中检索的内容。当您检索某个文本时,可以使用一种模式来描述要检索的内容。RegExp就是这种模式。简单的模式可以是一个单独的字符;更复杂的模式包括了更多的字符,并可用于解析、格式检查、替换等。
正则表达式可以规定字符串中的检索位置,以及要检索的字符类型等。
二、创建RexExp对象
创建正则表达式和创建字符串类似,创建正则表达式有两种方式:
       (1)使用字面量创建RegExp对象的语法:
       /pattern/attributes;
       (2)使用new关键词创建RegExp对象的语法:
       new RegExp(pattern, attributes);
参数释义:
       1参数pattern是一个字符串,指定了正则表达式的模式或其他正则表达式。
       2参数attributes是一个可选的模式字符串,包含属性 "g"、"i" 和 "m",分别用于指定全局匹配、不区分大小写的匹配和多行匹配。
       RegExp对象用于存储检索模式。通过new关键词来创建RegExp对象。以下代创建了名为pattern的 RegExp对象,其模式是 "e",当使用该RegExp对象在一个字符串中检索时,将寻找的是字符 "e"。

<span style="font-size:18px;">var pattern=new RegExp("e"); 
var pattern=new RegExp("e",gi);//设置全局搜素不区分大小写</span>

上述的也可以改成字面量的方式来创建,这种方式也是我们经常使用的方法:

<span style="font-size:18px;">var pattern=/e/; 
var pattern=/e/gi;</span>

三、RegExp对象详细解析
(1)RegExp对象属性

详解JavaScript正则表达式之RegExp对象

这些基本我们在上述的例子都已经见过,但我们还是举几个简单的例子来看一下:

<span style="font-size:18px;">var pattern=/e/gim; 
document.write(pattern.global+" ");//输出:true。说明设置了全局模式 
document.write(pattern.ignoreCase+" ");//输出:true 
document.write(pattern.multiline+" ");//输出:true 
document.write(pattern.source+" ");//输出:e</span>

(2)RegExp对象方法

详解JavaScript正则表达式之RegExp对象 

RegExp对象有3个方法:test()、exec()以及compile()。
1)test()方法检索字符串中的指定值,返回值是true或false。

<span style="font-size:18px;">var pattern=/e/; 
var str="The best things in life are free"; 
document.write(pattern.test(str));//输出:true</span>

2)exec()方法检索字符串中的指定值,返回值是被找到的值;如果没有发现匹配,则返回null。

实例:

<span style="font-size:18px;">var pattern=/e/; 
var str="The best things in life are free"; 
document.write(pattern.exec(str));//输出:e</span>

实例:
      向RegExp对象添加第二个参数,以设定检索。如果需要找到所有某个字符的所有存在,则可以使用 "g" 参数。
      在使用 "g" 参数时,exec() 的工作原理如下:

  •       1找到第一个 "e",并存储其位置。
  •       2如果再次运行exec(),则从存储的位置开始检索,并找到下一个 "e",并存储其位置。
<span style="font-size:18px;">var pattern=/e/g; 
var str="The best things in life are free"; 
do 
{ 
 var result=pattern.exec(str); 
 document.write(result+" "); 
} 
while(result!=null)</span>

输出的结果为:e e e e e e null
3)compile()方法用于改变正则表达式,compile()既可以改变检索模式,也可以添加或删除第二个参数。

<span style="font-size:18px;">var pattern=/e/; 
var str="The best things in life are free"; 
document.write(pattern.test(str));//输出:true 
pattern.compile("d"); 
document.write(pattern.test(str));//输出:false</span>

(3)支持正则表达式的String对象的方法

详解JavaScript正则表达式之RegExp对象

由于正则表达式和String对象有着一定的联系,因此String对象的一些方法可用于正则表达式:

<span style="font-size:18px;">var pattern=/e/g;//开启全局模式 
var str="The best things in life are free"; 
document.write(str.match(pattren)+"<br/>");//以数组的形式输出:e,e,e,e,e,e 
document.write(str.search(pattren)+"<br/>");//输出:2(返回第一个匹配到的位置) 
document.write(str.replace(pattren,"a")+"<br/>");//输出:Tha bast things in lifa ara fraa 
var pattern1=/\s/g;//\s表示空格字符 
document.write(str.split(pattren1));//输出:The,best,things,in,life,are,free</span>

(4)元字符是拥有特殊含义的字符:

详解JavaScript正则表达式之RegExp对象

由于这些使用广泛,我们只是举几个例子:

<span style="font-size:18px;">var pattern=/b.ue/;//点符号表示匹配除了换行符以外的任意字符。 
var str="blue"; 
document.write(pattern.test(str));//输出:true</span>

(5)方括号用于查找某个范围的字符:

详解JavaScript正则表达式之RegExp对象

<span style="font-size:18px;">var pattern=/[a-z]oogle/;//[a-z]表示26个小写字母,任意一个都可以匹配 
var str="woogle"; 
document.write(pattren.test(str));//输出:true</span>

(6)量词

详解JavaScript正则表达式之RegExp对象

<span style="font-size:18px;">var pattern=/go+gle/;//o*表示匹配至少一个0 
var str="google"; 
document.write(pattren.test(str));//输出:true</span>

四、常用的正则表达式
主要的是看变量patttern模式字符串表示的正则表达式。其余的是一些JS的基本的东西,可以忽略。
(1)检查邮政编码

<span style="font-size:18px;">var pattern=/^[0-9]{6}$/;//必须是6位,并且都是是数字 
var str=prompt("请输入邮政编码:"); 
if(pattern.test(str)) 
{ 
 alert("您输入的是正确的邮政标号!"); 
} 
else 
{ 
 alert("您输入的是错误的邮政标号!"); 
}</span>

输入一些数据运行的结果为:
输入:056500

详解JavaScript正则表达式之RegExp对象

详解JavaScript正则表达式之RegExp对象

 输入:123

详解JavaScript正则表达式之RegExp对象

详解JavaScript正则表达式之RegExp对象

(2)简单电子邮件地址验证

<span style="font-size:18px;">var pattern=/^([\w\.\-]+)@([\w\-]+)\.([a-zA-Z]{2,4})$/; 
var str=prompt("请输入邮箱名称:"); 
if(pattern.test(str)) 
{ 
 alert("您输入的是正确的邮箱名称!"); 
} 
else 
{ 
 alert("您输入的是错误的邮箱名称!"); 
}</span>

(3)检查上传文件压缩包

<span style="font-size:18px;">var pattern=/[\w]+\.zip|rar|gz/;//\w表示所有数字和字母以及下划线 
var str=prompt("请输入压缩包的名称:"); 
if(pattern.test(str)) 
{ 
 alert("您输入的是正确的压缩包名称!"); 
} 
else 
{ 
 alert("您输入的是错误的压缩包名称!"); 
}</span>

(4)检查手机号

<span style="font-size:18px;">var pattern=/^[1][0-9]{10}$/; 
var str=prompt("请输入手机号码:"); 
if(pattern.test(str)) 
{ 
 alert("您输入的是正确的手机号码!"); 
} 
else 
{ 
 alert("您输入的是错误的手机号码!"); 
}</span>

下面三个输出的结果就不再一一展示,只要写好模式正则表达式就可以检验输入的数据是否正确。由于刚刚接触正则表达式,可能有不正确的地方,自己会进行完善和修正,希望对大家的学习有所帮助。

Javascript 相关文章推荐
Javascript 类、命名空间、代码组织代码
Jul 31 Javascript
如何让div span等元素能响应键盘事件操作指南
Nov 13 Javascript
原始的js代码和jquery对比体会
Sep 10 Javascript
图片翻转效果具体实现代码
Jan 09 Javascript
JavaScript中this关键词的使用技巧、工作原理以及注意事项
May 20 Javascript
JS+CSS实现大气的黑色首页导航菜单效果代码
Sep 10 Javascript
jQuery实现的简单折叠菜单(折叠面板)效果代码
Sep 16 Javascript
JavaScript变量作用域_动力节点Java学院整理
Jun 27 Javascript
JavaScript仿微信(电话)联系人列表滑动字母索引实例讲解(推荐)
Aug 16 Javascript
基于Vue2的独立构建与运行时构建的差别(详解)
Dec 06 Javascript
vue几个常用跨域处理方式介绍
Feb 07 Javascript
layUI实现列表查询功能
Jul 27 Javascript
详解JavaScript基于面向对象之继承
Dec 13 #Javascript
轻松使用jQuery双向select控件Bootstrap Dual Listbox
Dec 13 #Javascript
基于jQuery通过jQuery.form.js插件实现异步上传
Dec 13 #Javascript
推荐阅读的js快速判断IE浏览器(兼容IE10与IE11)
Dec 13 #Javascript
JS如何判断是否为ie浏览器的方法(包括IE10、IE11在内)
Dec 13 #Javascript
javascript性能优化之DOM交互操作实例分析
Dec 12 #Javascript
JavaScript文档碎片操作实例分析
Dec 12 #Javascript
You might like
解析php中session的实现原理以及大网站应用应注意的问题
2013/06/17 PHP
PHP输出英文时间日期的安全方法(RFC 1123格式)
2014/06/13 PHP
Chrome中模态对话框showModalDialog返回值问题的解决方法
2010/05/25 Javascript
JavaScript flash复制库类 Zero Clipboard
2011/01/17 Javascript
面向对象的Javascript之三(封装和信息隐藏)
2012/01/27 Javascript
jquery 倒计时效果实现秒杀思路
2013/09/11 Javascript
JavaScript实现更改网页背景与字体颜色的方法
2015/02/02 Javascript
JQuery记住用户名密码实现下次自动登录功能
2015/04/27 Javascript
JavaScritp添加url参数并将参数加入到url中及更改url参数的方法
2015/10/26 Javascript
jQuery读取XML文件的方法示例
2017/02/03 Javascript
layui table设置前台过滤转义等方法
2018/08/17 Javascript
angularjs1.5 组件内用函数向外传值的实例
2018/09/30 Javascript
小程序实现长按保存图片的方法
2019/12/31 Javascript
JS中的const命令你真懂它吗
2020/03/08 Javascript
python实现网站的模拟登录
2016/01/04 Python
python 字典中文key处理,读取,比较方法
2018/07/06 Python
在python中画正态分布图像的实例
2019/07/08 Python
Python 实现大整数乘法算法的示例代码
2019/09/17 Python
python属于跨平台语言码
2020/06/09 Python
Windows 平台做 Python 开发的最佳组合(推荐)
2020/07/27 Python
python 无损批量压缩图片(支持保留图片信息)的示例
2020/09/22 Python
python基于pygame实现飞机大作战小游戏
2020/11/19 Python
python实现启动一个外部程序,并且不阻塞当前进程
2020/12/05 Python
python 爬取腾讯视频评论的实现步骤
2021/02/18 Python
意大利宠物用品购物网站:Bauzaar
2018/09/15 全球购物
欧克利英国官网:Oakley英国
2019/08/24 全球购物
工商管理专业应届生求职信
2013/11/04 职场文书
科技之星事迹材料
2014/06/02 职场文书
作风大整顿心得体会
2014/09/10 职场文书
六一领导慰问欢迎词
2015/01/26 职场文书
毕业论文答辩稿范文
2015/06/23 职场文书
宝宝满月祝酒词
2015/08/10 职场文书
超级实用!五步法则,教你写好年终工作总结
2019/12/05 职场文书
golang判断key是否在map中的代码
2021/04/24 Golang
在K8s上部署Redis集群的方法步骤
2021/04/27 Redis
适合后台管理系统开发的12个前端框架(小结)
2021/06/29 Javascript