攻破难啃的骨头-正则表达式(转)

很多Web开发人员在忽视正则表达式之后,还可以顺利的工作,但很多情况下,一句正确的正则表达式,很有可能省略半屏的代码。

 

 

正则表达式的解释

在JavaScript中,与大多数其他对象类型一样,有两种方法可以创建正则表达式:通过正则表达式字面量,或者通过构造RegExp对象的实例。
例如,如果要创建一个一般的正则表达式,用于精确匹配字符创“test”,可以使用正则字面量:

var pattern=/test/;

正斜杠可能看着有些奇怪,但是正如字符创是用引号进行界定一样,正则字面量是用正斜杠进行界定的。
或者,我们可以构造一个RegExp实例,将正则表达式作为字符串传入:

var pattern=new RegExp("test");

在开发过程中,如果正则是已知的,则优先选择字面量语法,而构造器方式则是用于在运行时,通过动态构建字符串来构建正则表达式。字面量语法优先于字符串的其中一个原因是反斜杠字符在普通字符串中也是一个转义字符,多以,我们要用\\来表示反斜杠。
除了表达式本身,还有三个标志可以与正则进行关联:

  • i:让正则表达式不区分大小写。
  • g:匹配模式中的所有实例,而不是默认只匹配第一次出现的结果。
  • m:允许匹配多个行。

这些标志将附加到字面量尾部(/test/ig)或者作为RegExp的第二个字符参数。

术语与操作符

匹配一类字符

  • [abc]:匹配a,b,c中的任何一个字符。
  • [^abc]:匹配除a,b,c以外的任意字符。
  • [a-m]:匹配从a到m的所有字符。

释义

  • /^test/:以test开头的字符串
  • /test$/:表示该模式必须出现在字符串的结尾

重复出现

  • /t?est/:该字符t可出现0次或1次
  • /t+est/:该字符t可出现1次或多次
  • /t*est/:该字符t可出现0次或多次
  • /a{4}/:该字符出现4次
  • /a{4,10}/:包含连续4个至10个a字符的字符串
    这些重复操作符可以是贪婪的也可以是非贪婪的,默认为贪婪的:匹配所有字符组合。在操作符后边加一个问号?字符,如a+?,可以让该表达式成为非贪婪的:进行最小限度的匹配

预定义字符类

预定义术语 匹配内容
\t 水平制表符
\b 空格
\v 垂直制表符
\f 换页符
\r 回车
\n 换行符
. 匹配除了新行之外的任意字符
\d 匹配任意数字,等价于[0~9]
\D 匹配任意非数字,定价与[^0~9]
\w 匹配包括下划线的任意单词字符,等价于[A-Za-z0-9_]
\W 匹配任意非单词字符,等价于[^A-Za-z0-9_]
\s 匹配任何空白字符,包括空格,制表符,换页符等
\S 匹配任意非空白字符
\b 匹配单词边界
\B 匹配非单词边界

分组

如果将操作符应用于一组术语,可以像数学表达式一样在改组上使用小括号。例如:/(ab)+/匹配一个或多个连续出现的子字符串“ab”

或操作符

可以用|字符表示或者的关系。例如/(ab)+|(cd)+/匹配出现一次或多次的“ab”或“cd”。

反向引用

这种术语表示法是在反斜杠后面加一个要引用的捕获数量,该数字从1开始,如\1、\2等。
例如:/^([dtn])a\1/匹配任意一个以d,t或者n开头,且后边跟着一个a字符,并且再后边跟着的是和第一个捕获相同字符的字符串。因此\1匹配的字符需要在执行的时候才能确定。
在匹配XML类型的标记元素的时候它很有用,例如/<(\w+)>(.+)</\1>/,可以匹配像“<strong>shtat</strong>”这样的元素。

编译正则表达式

正则表达式的两个重要阶段是编译和执行,编译发生在正则表达式第一次被创建时,而执行发生在我们使用编译过的正则表达式进行字符串匹配的时候。
正则表达式只创建一次,并将其保存在一个变量中供后续使用,这是一个重要的优化过程。

捕获匹配的片段

简单匹配一个字符创是否匹配一个模式显然是我们需要做的第一步,但在很多情况下,确定匹配的内容也是很有用的。

http://www.cnblogs.com/depsi/p/5163848.html

 

时间: 2024-10-30 05:25:58

攻破难啃的骨头-正则表达式(转)的相关文章

资本为何恋上生鲜电商这块难啃骨头

(自媒体公众号:laohushuokeji 或 老胡说科技) 电商细分领域未被攻克的最后堡垒--生鲜电商正迎来新的"资本谋局"阶段,新一轮资本盛宴正徐徐开启. 8月1日,中粮集团旗下我买网宣布获得B轮融资1亿美金,IDG资本领投,A轮领投的赛富基金追投(A轮投3700万美元),创造了国内食品电商包括生鲜电商领域的融资之最.这也是IDG资本历年来在电商行业的最大投资. 无独有偶,就在7月末,垂直生鲜电商本来生活也宣称一笔融资在今年1月份已完成,今年4月份资金到位. 有消息称,总部位于上海

国药控股吃下最难啃西南市场 全国版图只剩西藏

国药控股(01999,HK)终于在内地版图上拼完最后一块拼图. 5月8日,国药控股第41家成员,国药控股贵州有限公司在贵阳成立.至此,国药终于完全吃下最难啃的西南市场. 作为国内最大的医药流通企业,国药控股隶属于国药集团,2009年中期在港上市.当时国药集团给国控提出的目标是"2010年实现除西藏以外http://www.aliyun.com/zixun/aggregation/12536.html">中国内地所有省市自治区的覆盖". 由于今年3月,体量庞大的国药新疆药

跨国公司频频出现环境违法行为苹果最难啃

2007年以来,公众环境研究中心就开始向知名企业发起"绿色倡导",倡导大型企业绿化供应链,但他们发现,苹果是"最难啃"的.该机构从去年起连续发布了4期IT行业重金属污染调研报告,包括西门子.沃达丰和诺基亚已经在调查供应商超标记录,通过公开信息加强供应链管理等方面积极回应并有所行动. "而供应商发生工人中毒和环境违规,显示苹果公司在供应链环境和社会责任管理方面,存在明显漏洞.该公司一直无动于衷."马军说. 无论在西方还是在中国,都不乏有声音认为:出

移动医疗玩法多,纯线上模式难突破

过去一周对百度而言是难过的一周. 一场血友病吧被卖事件,让外界第一次认识到百度贴吧背负着沉重变现压力的事实,也让外界第一次意识到,贴吧对广大病患依然有着重要意义.同时,贴吧商业化所引发的争议,也显现出PC端医疗服务发展乏力的现状. 医疗从来都是一块难啃的骨头. 在PC互联网时代,健康类信息网站.问答社区.贴吧.搜索引擎等是患者寻求医疗资源和帮助的主要工具,但商业模式以及难以连接实体医疗服务是它们难以逾越的发展瓶颈. 与之相比,近年来兴起的移动医疗,具备能够连接医疗行业多方角色.打通实体医疗服务的

我买网融资千万美元:零售终端缺口难填 争夺生鲜市场

一直标榜全产业链的中粮集团,日前在零售终端上有了新动作. 7月22日,中粮我买网与赛富投资基金共同宣布,赛富投资基金投资中粮我买网项目,据了解,中粮我买网将获得数千万美元注资. 我买网总经理赵平原表示,网站将在未来几年内瞄准全国市场,大力开拓地方渠道,升级全程冷链系统,扩大全球直采.原产地直送力度,实现中粮我买网全新升级. 然而,成立四年多的中粮我买网目前市场表现不太妙.有电商分析人士告诉<每日经济新闻>记者,中粮集团旗下众多食品品牌对我买网平台的支持基本可以忽略不计,如今的我买网重建一个全食

我买网获千万美元投资 中粮零售终端缺口难填

中介交易 SEO诊断 淘宝客 云主机 技术大厅 每经记者 张斯 赵陈婷 发自北京 一直标榜全产业链的中粮集团,日前在零售终端上有了新动作. 7月22日,中粮我买网与赛富投资基金共同宣布,赛富投资基金投资中粮我买网项目,据了解,中粮我买网将获得数千万美元注资. 我买网总经理赵平原表示,网站将在未来几年内瞄准全国市场,大力开拓地方渠道,升级全程冷链系统,扩大全球直采.原产地直送力度,实现中粮我买网全新升级. 然而,成立四年多的中粮我买网目前市场表现不太妙.有电商分析人士告诉<每日经济新闻>记者,中

龙文教育:补习行业藏危机盲目扩张致举步难

人人都上补习班.2011年5月,由北京21世纪教育学院进行的一项调查显示,在北京小学三年级至六年级的学生中,有87%报读过各种补习班;在四年级.五年级的学生中,有92%报读过各种补习班.到处都是补习班.举不完全统计,目前,全国大大小小各种教育培训机构超过10万家.其中,仅仅石家庄一个省会城市就有2000多家课外补习班,一所重点中学周围,散布者大约50家补习班.推荐阅读 独立基金销售的四个角色定位 偏股基金遭遇"落袋为安" 银行系信托规模利润"快跑" 婚前财产信托&q

IE11“最安全”?顶级黑客团队 VUPEN 吓跑了

世界黑客大赛Pwn2Own 2015将在3月18日开战.就在大赛规则公布后,法国黑客团队VUPEN却宣布退出.VUPEN表示,本届比赛IE11浏览器的攻击难度增大,奖金却削 减了,吐槽比赛规则太过苛刻.作为过去四年Pwn2Own黑客大赛的四连冠明星团队,VUPEN的退出也使IE11有望保住"不破金身". Pwn2Own是全球级别最高.奖金最丰厚的黑客大赛.其赞助商更是大牌云集,不仅包括Google.微软. 苹果等互联网巨头,更有美国五角大楼入侵防护系统供应商TippingPoint作为

中国黑客围攻苹果Mac?库克竟躲在角落偷笑?

正在加拿大温哥华举办的世界黑客大赛Pwn2Own战事正酣,吸引了来自中.美.德三国11支战队参赛.从北京时间3月17日凌晨开始,苹果Mac OS项目摆上擂台,4支中国团队对其展开围剿.最终,360安全战队和长亭安全实验室成功攻破MacOS,腾讯派出的两支队伍却不幸铩羽而归,腾讯Shield战队赛前因为不明原因突然弃权,腾讯Sniper战队更是违反规则而被取消资格. 根据Pwn2Own官方网站显示的比赛日程,首先向MacOS发起进攻的是腾讯Shield战队.但不知道是因为参赛选手状态不佳,还是攻击