Javascript笔记 – Javascript中的正则表达式
本文由发表于6年前 | Javascript | 暂无评论 |  被围观 3,721 views+
1、元字符与特殊字符:1.1、元字符:1.2、特殊字符串:1.3、范围及重复:2、设置重复字符个数范围的方式:3、分组与引用:① 表示括号部分的可有可无:② 表示分组③ 括号用来作为辅助作用4、使用正则表达式:4.1、创建正则表达式的方法:① 使用字面量② 使用RegExp4.2、RegExp对象提供的匹配方法:5、其他类中的提供的正则表达式匹配功能5.1、String类中的正则表达式:
match例子:
replace例子:
split例子:
search例子:

Javascript中提供了正则表达式的相关类RegExp,通过该对象,用户可以自定义模式来对字符串进行匹配。

另外,Javascript中String对象的replace方法也支持使用正则表达式对串进行匹配。

Javascript中RegExp对象实现了perl正则表达式的一个子集。

1、元字符与特殊字符:
1.1、元字符:
元字符	含义
^	串的开始
$	串的结束
*	零到多次匹配
+	一到多次匹配
?	零或一次匹配
\b	单词边界
1.2、特殊字符串:
字符	含义
字符本身	匹配字符本身
\r	匹配回车
\n	匹配换行
\t	制表符
\f	换页
\x#	匹配十六进制数
\cX	匹配控制字符
1.3、范围及重复:
标志符	含义
[…]	在集合中的任一个字符
[^…]	不在集合中的任一个字符
.	出\n之外的任一个字符
\w	所有的单字,包括字母,数字及下划线
\W	不包括所有的单字,\w的补集
\s	所有的空白字符,包括空格,制表符
\S	所有的非空白字符
\d	所有的数字
\D	所有的非数字
\b	退格字符

下面是一个邮件的正则表达式例子:

//email正则表达式
var emailReg = /^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$/;
alert(emailReg.test("pzx@itzhai.com"));
//匹配Java中的变量
var javaCon = /[a-zA-Z_][a-zA-Z0-9_]*/; 
alert(javaCon.test("jason1_2"));
2、设置重复字符个数范围的方式:
标记	含义
{n}	重复n次
{n,}	重复n或更多次
{n,m}	重复至少n次,至多m次
//手机号码
var mphone = /\d{11}/;
3、分组与引用:

正则表达式中括号的作用:

① 表示括号部分的可有可无:
h(elp)  //h必选,elp可选
② 表示分组

使用括号进行分组,当正则表达式执行完成之后与之配对的文本将会按照规则填入各组,并保存到一个数组中:

var pattern = /\w{4}(\d{4})(\w{2})/;
var result = pattern.exec("abcd1989js");
alert(result[0]);  //匹配到的整个字符串abcd1989js
alert(result[1]);  //匹配到的第一个分组1989
alert(result[2]);  //匹配到的第二个分组js
③ 括号用来作为辅助作用

当使用括号括起了一些正则匹配字符,后面要引用这个括号中的匹配规则,可以使用\1(表示第一个分组)\2(表示第二个分组)

var pattern1 = /['"][^'"]*['"]/;
var str1 = "\'Good job!!!\"";
alert(pattern1.exec(str1));  //匹配到'Good job!!!"

var pattern2 = /(['"])[^'"]*\1/;
var str2 = "\"Good job!!!\"";
alert(pattern2.exec(str1));  //null

第二个输出为null,没有匹配到,就是说,如果要在运行时才能知道第一个匹配到是什么而第二个匹配点又需要第一个相同的话,就得使用括号复制,并使用\1来引用这个分组。

4、使用正则表达式:
4.1、创建正则表达式的方法:
① 使用字面量
var regex = /pattern/[switchs];
② 使用RegExp
var regex = new RegExp("pattern", switchs);

其中switchs(开关)有如下三种:

修饰符	描述
i	忽略大小写开关
g	全局搜索开关
m	多行搜索开关(重定义^与$的意义)
var pattern = /[a-z]*/i;  //忽略大小写
var str = "AbAbAaB"; 
alert(pattern.exec(str));  //匹配到AbAbAaB
4.2、RegExp对象提供的匹配方法:
方法名	描述
test()	测试模式是否匹配
exec()	对串进行匹配
compile()	编译正则表达式
其中test方法值测试是否匹配,返回布尔值
exec匹配字符串,并返回需要分组的信息,返回一个数组
compile表示改变表达式的模式,和重新声明一个正则表达式对象的作用相同。
5、其他类中的提供的正则表达式匹配功能
5.1、String类中的正则表达式:

String中提供了与正则表达式操作相关的函数:

方法	作用
match	匹配正则表达式,返回匹配数组
replace	替换
split	分割
search	查找,返回首次发现的位置
match例子:
var str = "Welcome to http://www.itzhai.com";
var result = str.match(/el|ht/g);  //返回数组["el","ht"]
alert(result);
replace例子:
var str = "Welcome to http://www.itzhai.com";
var result = str.replace(/www./g, "");  //把www.替换成空
alert(result);  //Welcome to http://itzhai.com

replace方法不会影响到原来的字符串,而是返回一个被处理后的新的字符串

如果想在这里使用分组引用,可以使用$n:

var str = "Welcome to http://www.itzhai.com";
var result = str.replace(/(\w+)\s(\w+)/g, "$2 ? $1");
alert(result);  //to ? Welcome http://www.itzhai.com
split例子:
var str = "1234:5678:9012";
var result = str.split(/:/);  //返回一个数组[1234,5678,9012]
alert(result);

split使用给出的正则匹配规则把原有的字符串分成一个数组

search例子:

search就是查找匹配的文本在字符串中的位置,如果没有找到返回-1:

var str = "1234:5678:9012";
var index = str.search(/:/);  //4
alert(index);
除了文章中有特别说明,均为IT宅原创文章,转载请以链接形式注明出处。
本文链接:http://www.itzhai.com/javascript-notes-javascript-regular-expression.html
arthinking Java技术交流群:280755654,入门群:428693174 more
分享到:
 
2012 5/22
文章评论
    没有评论
给我留言

有人回复时邮件通知我
Javascript的相关文章
随机文章 本月热门 热评
1 Chrome 插件开发小记 2013/6/5
2 Java基础笔记 – 增强的for循环For each循环 自动装箱拆箱 可变参数 2011/10/30
3 IT宅书籍推荐:《富爸爸,穷爸爸 》 2012/1/14
4 Javascript笔记 – Javascript中的语言特性和数据类型 2012/5/22
5 Java基础笔记 – 抽象类与接口 2011/10/26
6 使用masm for windows编译并跟踪调试程序 2011/4/14
友情推荐 更多
破博客 文官洗碗安天下,武将打怪定乾坤。多么美好的年代,思之令人泪落。
Mr.5's Life 白天是一名程序员,晚上就是个有抱负的探索者
行知-追寻技术之美 关注大数据,分布式系统
我爱编程 编程成长轨迹
Cynthia's Blog 学习笔记 知识总结 思考感悟
 
猜您喜欢
欢迎关注我的公众号 IT宅
关于IT宅 文章归档

IT宅中的文章除了标题注明转载或有特别说明的文章,均为IT宅的技术知识总结,学习笔记或随笔。如果喜欢,请使用文章下面提供的分享组件。转载请注明出处并加入文章的原链接。 感谢大家的支持。

联系我们:admin@itzhai.com

Theme by arthinking. Copyright © 2011-2015 IT宅.com 保留所有权利.