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

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

str='cainiao8';
execReg(reg,str);匹配cainiao。

需要注意的是,括号里的内容并不参与真正的匹配,只是检查一下后面的字符是否符合要求而已,例如上面的正则,返回的是cainiao,而不是cainiao8。

再来看两个例子:

reg = /blue(?=idea)/;
str='blueidea';
execReg(reg,str);匹配到blue,而不是blueidea。

reg = /blue(?=idea)/;
str='bluetooth';
execReg(reg,str);返回null,因为blue后面不是idea。

reg = /blue(?=idea)/;
str='bluetoothidea';
execReg(reg,str);同样返回null。

?!
形式(?!pattern)和?=恰好相反,要求字符串的后面不能紧跟着某个pattern,还拿上面的例子:

reg = /blue(?!idea)/;
str='blueidea';
execReg(reg,str);返回null,因为正则要求,blue的后面不能是idea。

reg = /blue(?!idea)/;
str='bluetooth';
execReg(reg,str);则成功返回blue。

匹配元字符
首先要搞清楚什么是元字符呢?我们之前用过*,+,?之类的符号,它们在正则表达式中都有一定的特殊含义,类似这些有特殊功能的字符都叫做元字符。例如

reg = /c*/;表示有任意个c,但是如果我们真的想匹配’c*’这个字符串的时候怎么办呢?只要将*转义了就可以了,如下:

reg = /c\*/;
str='c*';
execReg(reg,str);返回匹配的字符串:c*。

同理,要匹配其他元字符,只要在前面加上一个“\”就可以了。
正则表达式的修饰符
全局匹配,修饰符g
形式:/pattern/g

例子:reg = /b/g;

后面再说这个g的作用。先看后面的两个修饰符。

不区分大小写,修饰符i
形式:/pattern/i

例子:

var reg = /b/;
var str = 'BBS';
execReg(reg,str);返回null,因为大小写不符合。

var reg = /b/i;
var str = 'BBS';
execReg(reg,str);匹配到B,这个就是i修饰符的作用了。

行首行尾,修饰符m
形式:/pattern/m


m修饰符的作用是修改^和$在正则表达式中的作用,让它们分别表示行首和行尾。例如:

 


var reg = /^b/;
var str = 'test\nbbs';
execReg(reg,str);匹配失败,因为字符串的开头没有b字符。但是加上m修饰符之后:

var reg = /^b/m;
var str = 'test\nbbs';
execReg(reg,str);匹配到b,因为加了m修饰符之后,^已经表示行首,由于bbs在字符串第二行的行首,所以可以成功地匹配。


exec方法详解
exec方法的返回值
exec方法返回的其实并不是匹配结果字符串,而是一个对象,简单地修改一下execReg函数,来做一个实验就可以印证这一点:


function  execReg(reg,str){
 var result =  reg.exec(str);
 alert(typeof result);
}
var reg = /b/;
var  str='bbs.bblueidea.com';
execReg(reg,str);结果显示result的类型是object。而且是一个类似数组的对象。使用for in可以知道它的属性: index input 0。其中index是表示匹配在原字符串中的索引;而input则是表示输入的字符串;


至于0则是表示只有一个匹配结果,可以用下标0来引用这个匹配结果,这个数量可能改变。我们可以通过返回值的length属性来得知匹配结果的总数量。


根据以上对返回值的分析,修改execReg函数如下:


function  execReg(reg,str){

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

推荐热点

  • 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