轻松学习JavaScript十四:JavaScript的RegExp对象(正則表達式)
一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对象属性
这些基本我们在上述的样例都已经见过,但我们还是举几个简单的样例来看一下:
<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对象方法
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对象的方法
因为正則表達式和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)元字符是拥有特殊含义的字符:
因为这些使用广泛。我们仅仅是举几个样例:
<span style="font-size:18px;">var pattern=/b.ue/;//点符号表示匹配除了换行符以外的随意字符。 var str="blue";
document.write(pattern.test(str));//输出:true</span>
(5)方括号用于查找某个范围的字符:
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">
<span style="font-size:18px;">var pattern=/[a-z]oogle/;//[a-z]表示26个小写字母,随意一个都能够匹配
var str="woogle";
document.write(pattren.test(str));//输出:true</span>
(6)量词
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">
<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
输入:123
(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的RegExp对象(正則表達式)的更多相关文章
- JavaScript正則表達式知识汇总
Js 正則表達式知识汇总 正則表達式: 1.什么是RegExp?RegExp是正則表達式的缩写.RegExp 对象用于规定在文本中检索的内容. 2.定义RegExp:var +变量名=new RegE ...
- DOM笔记(十):JavaScript正則表達式
一.RegExp ECMAScript通过RegExp类型类支持正則表達式,语法和Perl类似: var exp = /pattern/flags; patternb部分是不论什么简单的或复杂的正則表 ...
- JavaScript使用正則表達式
2.0 简单介绍 正則表達式是能够用来查找与给定模式匹配的文本的搜索模式.比如,在上一章中,我们在一个较长的字符串中查找子字符串Cookbook: var testValue = "This ...
- 【JavaScript】正則表達式
正則表達式,也不是第一次与它见面了.在我们学习ASP.NET视频的时候,验证控件的那个实例中.就有提到过它. 那个时候.都是在控件的属性中自己设置的,用的原理就是正則表達式,当时得感觉就是方便,强大, ...
- JavaScript 正則表達式
一.简单介绍 1.什么是正則表達式 正則表達式本身就是一种语言,这在其他语言是通用的. 正則表達式(regular expression)描写叙述了一种字符串匹配的模式,能够用来检查一个串是否含有某种 ...
- javascript 正則表達式补充
定义 JavaScript种正則表達式有两种定义方式,定义一个匹配类似 <%XXX%> 的字符串 1. 构造函数 var reg=new RegExp('<%[^%>]+%&g ...
- javascript正則表達式 "\b"问题
preface 昨晚在看<javascript权威指南>后.看见作者自己封装一个兼容全部浏览器的山寨HTML5新API classLIst类.自己想了想认为自己也要去玩一下.可是能力还是有 ...
- 轻松学习之Linux教程六 正則表達式具体解释
本系列文章由@超人爱因斯坦出品.转载请注明出处. 作者:超人爱因斯坦 个人站点:http://www.hpw123.net 文章链接:http://hpw123.net/a/L ...
- 7.4 Javascript:表单验证-揭开正則表達式的面纱
用元字符匹配对应的字符类型 创建正則表達式有点像创建字符串字面量,仅仅只是正則表達式出如今一对"/"里 正則表達式中会用到一级元字符.用于连接字母与数字 "." ...
随机推荐
- 非负整数可重集去重&排序+获得可重集的全排列的几种方法
非负整数可重集O(n)去重并排序 可重集是指元素可重复的集合,对于在一定区间内的正整数集,比如[1,n],我们可以在不不使用任何额外空间(包括不使用O(1)的空间)的情况下,用O(n)的时间复杂度完成 ...
- (转载)UIKIt力学教程
转载自:http://www.cocoachina.com/ios/20131226/7614.html 这篇文章还可以在这里找到 英语, Ray:这篇教程节选自 iOS 7 教程集,它是 iOS ...
- [CF235E]Number Challenge
$\newcommand{fl}[1]{\left\lfloor#1\right\rfloor}$题意:求$\sum\limits_{i=1}^a\sum\limits_{j=1}^b\sum\lim ...
- [UOJ164]V
线段树真是好东西... 每个线段树节点维护四个标记:$a,b,maxa,maxb$,$(a,b)$表示对子树内的所有数执行$x'=\max(x+a,b)$,$maxa,maxb$是历史最大标记,初始时 ...
- Grunt上手指南(转)
Grunt , javascript 我想先花点时间回忆一下作为一个前端需要做的工作(Loading...) JS合并 JS压缩 CSS压缩 CSS Sprite 图片优化 测试 静态资源缓存(版本 ...
- 安装CentOS 6停在selinux-policy-targeted卡住的问题解决
在刚开始安装时,设置swap分区.设置swap分区.设置swap分区 参考: http://tieba.baidu.com/p/3817971339 http://blog.csdn.net/zhan ...
- DataRow 数组转化成DataTable
#region 封装DataTable DataTable dt = null; if (newRows.Length > 0) { dt = newRows[0].Table.Clone(); ...
- android连接Mysql数据库之JDBC方式
一.创建一个数据库和若干表,并导入相关信息.这里以我之前使用的一个图书系统的数据库为例子. 首先假设已经安装并配置好Mysql.(建议大家安装WAMP,也就是安装完这个,就相当于安装了Mysql,PH ...
- PHP计算字符串长度,PHP如何计算短信的长度/字数?
PHP计算字符串长度,包括计算英文.GBK.UTF-8多种字符集下PHP如何计算字符串长度. 英文字符串长度,strlen()是PHP自带的计算英文字符串的函数. GBK字符串长度 中文字符计算为2个 ...
- 理解面向对象编程---C#控制台实现52张扑克牌的分法
52张牌随机分给4个玩家,要求每个玩家的牌用一个一维数组表示. 我们采用模拟大法.初始化一副扑克牌,洗牌,发牌. using System; using System.Collections.Gene ...