JS中的正则表达式入门(4)

来源:未知 责任编辑:责任编辑 发表时间:2015-09-16 20:04 点击:

reg = /\w+/;
str='.className';
execReg(reg,str);结果显示匹配了字符串中的className,只有第一个“.”——唯一的非单词字符没有匹配。

reg = /\w+/;
str='中文如何?';
execReg(reg,str);试图用单词字符去匹配中文自然行不通了,返回null。

\W表示非单词字符,等效于[^a-zA-Z0-9_]

reg = /\W+/;
str='中文如何?';
execReg(reg,str);返回完整的字符串,因为,无论是中文和“?”都算作是非单词字符。

反向引用
形式如下:/(子正则表达式)\1/

依旧用例子来说明:

1.

reg = /\w/;
str='blueidea';
execReg(reg,str);返回b。


2.
reg = /(\w)(\w)/;
str='blueidea';
execReg(reg,str);返回bl,b,l

bl是整个正则匹配的内容,b是第一个括号里的子正则表达式匹配的内容,l是第二个括号匹配的内容。


3.
reg = /(\w)\1/;
str='blueidea';
execReg(reg,str);则会返回null。这里的“\1”就叫做反向引用,它表示的是第一个括号内的字正则表达式匹配的内容。在上面的例子中,第一个括号里的(\w)匹配了b,因此“\1”就同样表示b了,在余下的字符串里自然找不到b了。


与第二个例子对比就可以发现,“\1”是等同于“第1个括号匹配的内容”,而不是“第一个括号的内容”。

reg = /(\w)\1/;
str='bbs.blueidea.com';
execReg(reg,str);这个正则则会匹配到bb。


同样,前面有几个子正则表达式我们就可以使用几个反向引用。例如:

reg = /(\w)(\w)\2\1/;
str='woow';
execReg(reg,str);会匹配成功,因为第一个括号匹配到w,第二个括号匹配到o,而\2\1则表示ow,恰好匹配了字符串的最后两个字符。

括号(2)
前面我们曾经讨论过一次括号的问题,见下面这个例子:

reg = /^(b|c).+/;
str='bbs.blueidea.com';
execReg(reg,str);这个正则是为了实现只匹配以b或者c开头的字符串,一直匹配到换行字符,但是。上面我们已经看到了,可以使用“\1”来反向引用这个括号里的子正则表达式所匹配的内容。而且exec方法也会将这个字正则表达式的匹配结果保存到返回的结果中。

不记录子正则表达式的匹配结果
使用形如(?:pattern)的正则就可以避免保存括号内的匹配结果。例如:

reg = /^(?:b|c).+/;
str='bbs.blueidea.com';
execReg(reg,str);可以看到返回的结果不再包括那个括号内的字正则表达式多匹配的内容。

同理,反向引用也不好使了:

reg = /^(b|c)\1/;
str='bbs.blueidea.com';
execReg(reg,str);返回bb,b。bb是整个正则表达式匹配的内容,而b是第一个子正则表达式匹配的内容。

reg = /^(?:b|c)\1/;
str='bbs.blueidea.com';
execReg(reg,str);返回null。由于根本就没有记录括号内匹配的内容,自然没有办法反向引用了。

正向预查
形式:(?=pattern)

所谓正向预查,意思就是:要匹配的字符串,后面必须紧跟着pattern!

我们知道正则表达式/cainiao/会匹配cainiao。同样,也会匹配cainiao9中的cainiao。但是我们可能希望,cainiao只能匹配cainiao8中的菜鸟。这时候就可以像下面这样写:/cainiao(?=8)/,看两个实例:

reg = /cainiao(?=8)/;
str='cainiao9';
execReg(reg,str);返回null。

reg = /cainiao(?=8)/;

发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
用户名: 验证码:点击我更换图片
最新评论 更多>>

推荐热点

  • Gb2312转utf-8编码的方法(vbs+js)
  • 如何使用Ajax技术开发Web应用程序(1)
  • js跳转路径问题
  • JavaScript模仿桌面窗口
  • 2011年度最佳 jQuery 插件
  • jquery学习笔记---jqGrid学习笔记 完整整理
  • 我知道的JavaScript -- 设计模式(桥接)应用之 – 验证器
  • 运用JavaScript构建你的第一个Metro式应用程序(on Windows
  • 我是如何去了解jquery的(六),案例之幻灯片轮换
网站首页 - 友情链接 - 网站地图 - TAG标签 - RSS订阅 - 内容搜索
Copyright © 2008-2015 计算机技术学习交流网. 版权所有

豫ICP备11007008号-1