JavaScript常用正则表达式与应用(一)
JavaScript的String类和RegExp对象类都定义了相关方法使用正则表达式进行模式匹配,本文将以连载方式介绍JavaScript常用正则表达式与相关应用,欢迎交流
本节是连载一,首先介绍JavaScript语言常用的正则表达式,如何应用将在后几篇介绍。
所有案例将采用在线正则表达式验证工具RegExr进行测试,地址是:http://regexr.com/v1/
测试文本来自Prestel Publishing Ltd.出版某书籍的版权信息:
Copy Right
The Library of Congress Cataloguing-in-publication data is available;
British Libarary Cataloguing-in-Publication Data:a catalogue record for this book is available from the British Libarary;
Deutsche Bibliothek holds a record of this publication in the Deutsche Nationalbibliografie;
detailed bibliographical data can be found under:http://dnb.ddb.de Prestel Verlag,Munich·Berlin·london·New York 2006
(First published in hardback) Prestel Verlag
Koniginstrasse 9,80539 Munich
Tel.(089)387109-0;fax(089)387109-35 Prestel Publishing Ltd.
1.匹配字符串字面值:
正则表达式字面值包含在一对正斜杠内,如:var parttern=/P/ ,意为匹配大写字符"P"(使用RegExr测试时不用输入正斜杠,直接在match一栏输入字面值即可)
如下图所示,在match一栏输入"P"(同时勾选global和multiline,含义将在下文解释),将目标文档中所有的大写字母"P"均以蓝绿色高亮显示:
[1]
输入任何在本文中出现的字符或数字,都会实现直接匹配效果,感兴趣的可以继续尝试。
2.匹配字符集与字符集简写
如果想匹配目标文本中的某一类字符,比如数字、空格或者是小写字母,则要使用字符集,以下给出了常用字符集正则表达式和其简写形式:
[2]
下图为测试数字匹配的实例,[0-9]和\d的匹配结果一致:
[3]
[4]
另外,在RegExr中可使用点号"."匹配任意字符,详见下图:
[5]
3.匹配元字符字面值
正则表达式中有些字符输入字面值是不会予以匹配的,这些字符即为元字符。元字符有如下几种:^ $ . * + ? = ! : | \ / () [] {} 每个元字符都有其特殊含义,下文将一一解释。元字符字面值不参与匹配,如需匹配元字符内容则有如下三种常见方式:
1)对元字符用反斜杠"\"进行转义,下例用"\."来匹配点号"."字面值:
[6]
2)将元字符放入\Q和\E之间,下例用"\Q.\E"来匹配点号"."字面值:
[7]
3)将元字符放入字符组,用"[]"号括起来,下例用"[.]"来匹配点号字面值:
[8]
4.正则表达式的量词
在上文-2节中,我们在RegExr中勾选global,并使用\d来匹配目标文本中出现的所有数字。所有数字均被高亮显示。
如果我们要匹配目标文本的电话号码Tel.(089)387109-0,要怎么处理呢?这个电话号码由()括起来的3位区号,5位数字,连接符-,后加1位数字组成。可使用如下语法匹配电话号码:
\(\d{3}\)\d{6}[-]\d{1}(?=\;)
[9]
以下是对该语法的逐条解释:
[10]
上式使用了(?=\;)来保证只匹配电话号码。如果要既要匹配电话号码,也要匹配传真号,需要使用下式:
\(\d{3}\)\d{6}[-]\d{1,2}
其中,d{1,2}表示可以匹配至少1位数字,至多2位数字。由下图可见,该表达式可同时匹配目标文档的电话号码与传真号:
[11]
正则表达式量词除了上文使用的\d{n}和\d{n,m}外,还有问号"?"、星号" *"和加号"+",分别有不同含义:
[12]
5.正则表达式的选择、分组和引用
正则表达式可以使用元字符"|"、"()"和"\"进行选择、分组和引用操作:
[13]
1)选择符"|"的匹配包含两种形式:一种情况是各匹配项均独立,不存在包含关系,这种情况下“|”号两边的正则式都会执行匹配。下例使用"ca|t"匹配目标文本,含有"ca"(小写的c,未勾选ingnoreCase)和"t"的字符都会得到匹配:
[14]
另一种情况是匹配项存在包含关系。选择符"|"执行最小匹配,匹配次序从左至右,如果右边的表达式包含左边的表达式,则不再匹配右边。下例使用“ca|cat”匹配目标文本,结果仅匹配"ca",含"cat"的部分并未匹配:
[15]
2)正则表达式用"()"对匹配式进行分组,分组后可以使用"\n"对分组进行引用,n为分组序号。例如:
[16]
对本例采用的正则表达式(\d{3})(\))(\d{6})(.{7})\1\2\3进行解释:
[17]
6.正则表达式的边界
正则表达式边界即为标记匹配起始位置的符号,有如下几种:
[18]
1)下例中,"^(P|p)(\w*)"匹配了以p开头的行,而"(P|p)(\w*)"不仅匹配了以p开头的行,还匹配了行内以p开头的字符:
[19]
[20]
2)表达式"[.;]$"匹配了以"."或则";"结尾的行,对于行内的点号"."则未进行匹配:
[21]
3)表达式"\bP\w*n\b"匹配了以大写P开头,小写字母n结尾的单词:
[22]
表达式"\bP\w*n\B"匹配了以大写P开头,小写字母n不作为单词结尾的字符,可以比较一下与上文有何差异:
[23]
4)表达式"\d(?=\;)"表示匹配分号";"前面的一个数字:
[24]
表达式"\d(?!\;)"表示不匹配后面带有分号";"的数字:
[25]
7.正则表达式的修饰符
JavaScript支持正则表达式的三种修饰符:
[26]
以上介绍了常用正则表达式的语法内容,下一篇将介绍正则表达式在JavaScript语言中的应用。
【20050201-Ver1.0.0】
JavaScript常用正则表达式与应用(一)的更多相关文章
- JavaScript 常用正则表达式
==========================正则表达式=========================== 常用元字符 代码 说明 . 匹配除换行符以外的任意字符 \w 匹配字母或数字或下划 ...
- Javascript常用正则表达式汇总
一.匹配数字和字符串 整数或者小数:^[0-9]+\.{0,1}[0-9]{0,2}$ 只能输入数字:"^[0-9]*$". 只能输入n位的数 字:"^\d{n}$&qu ...
- Javascript常用正则表达式
一.校验数字的表达式 数字:^[0-9]*$ n位的数字:^\d{n}$ 至少n位的数字:^\d{n,}$ m-n位的数字:^\d{m,n}$ 零和非零开头的数字:^(0|[1-9][0-9]*)$ ...
- Javascript正则构造函数与正则表达字面量&&常用正则表达式
本文不讨论正则表达式入门,即如何使用正则匹配.讨论的是两种创建正则表达式的优劣和一些细节,最后给出一些常用正则匹配表达式. Javascript中的正则表达式也是对象,我们可以使用两种方法创建正则表达 ...
- JavaScript常用表单验证正则表达式(身份证、电话号码、邮编、日期、IP等)
身份证正则表达式 //身份证正则表达式(15位)isIDCard1=/^[1-9]\d{7}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}$/;//身份证正则表达式 ...
- JavaScript中正则表达式判断匹配规则以及常用的方法
JavaScript中正则表达式判断匹配规则以及常用的方法: 字符串是编程时涉及到的最多的一种数据结构,对字符串进行操作的需求几乎无处不在. 正则表达式是一种用来匹配字符串的强有力的武器.它的设计思想 ...
- javascript中正则表达式的基础语法
× 目录 [1]定义 [2]特点 [3]元字符[4]转义字符[5]字符组[6]量词[7]括号[8]选择[9]断言[10]模式[11]优先级[12]局限性 前面的话 正则表达式在人们的印象中可能是一堆无 ...
- [python] 常用正则表达式爬取网页信息及分析HTML标签总结【转】
[python] 常用正则表达式爬取网页信息及分析HTML标签总结 转http://blog.csdn.net/Eastmount/article/details/51082253 标签: pytho ...
- 常用正则表达式-copy
匹配中文:[\u4e00-\u9fa5] 英文字母:[a-zA-Z] 数字:[0-9] 匹配中文,英文字母和数字及_: ^[\u4e00-\u9fa5_a-zA-Z0-9]+$ 同时判断输入长度:[\ ...
随机推荐
- JavaScript 判断是否为undefined
if (typeof(reValue) == "undefined") { alert("undefined"); }
- MongoDB实战指南(二):索引与查询优化
数据库保存记录的机制是建立在文件系统上的,索引也是以文件的形式存储在磁盘上,在数据库中用到最多的索引结构就是B树.尽管索引在数据库领域是不可缺少的,但是对一个表建立过多的索引会带来一些问题,索引的建立 ...
- SPRING IN ACTION 第4版笔记-第五章BUILDING SPRING WEB APPLICATIONS-004-以query parameters的形式给action传参数(@RequestParam、defaultValue)
一. 1.Spring MVC provides several ways that a client can pass data into a controller’s handler method ...
- VC 为静态控件添加事件(修改ID号以后添加事件)
操作系统:Windows 7软件环境:Visual C++ 2008 SP1本次目的:为静态控件添加事件,如:STATIC.Picture Control等等 有时候我们找到一个图片,为对话框背景添加 ...
- 【HDOJ】1238 Substrings
深搜+剪枝,简单字符串. #include <stdio.h> #include <string.h> #define MAXLEN 105 #define MAXNUM 10 ...
- 【DataStructure In Python】Python模拟链表
最近一直在学习Python和Perl这两门语言,两者共同点很多,也有不多.希望通过这样的模拟练习可以让自己更熟悉语言,虽然很多时候觉得这样用Python或者Perl并没有体现这两者的真正价值. #! ...
- wzplayer2 for windows ActiveX 试用地址
提供wzplayer2 for windows ActiveX,测试地址:http://www.coolradio.cn/IE.htm 大家使用时候必须允许未签名ActiveX下载和运行,否则将无法正 ...
- keytool 错误: java.io.FileNotFoundException: 拒绝访问
keytool 错误: java.io.FileNotFoundException: 拒绝访问 打开命令行,切换到D:\AndroidStudioProjects\MyApplication\app目 ...
- hadoop异常: 到目前为止解决的最牛逼的一个异常(java.io.IOException: Incompatible clusterIDs)
(注意: 本人用的版本为hadoop2.2.0, 旧的版本和此版本的解决方法不同) 异常为: 9 (storage id DS-2102177634-172.16.102.203-50010-1384 ...
- 解决因block的损坏而导致hdfs启动后进入安全模式
问题描述: 以单机伪分布式方式安装了hadoop2.7.1,并在该机器上安装了hive1.2.1.首先执行 sbin/start-dfs.sh 启动hdfs服务,然后执行hive,这时hive脚本启动 ...