JavaScript正则表达式学习笔记<1>

js-regular-expression-learning-part-one

刚刚收到李炎恢老师的弟子CJ写的一部JavaScript+Ajax+JQuery视频教程,对于我这种刚入门级的菜菜来说真是雪中送炭呀!今天看到了正则表达式章节,感觉老师讲得非常不错,做点笔记与大家分享,当然也做个免费广告哈:如果想购买此视频教程的话点击这里。绝对物超所值,现在网络上最新的关于JS的视频教程也就是这个了哦。

1.什么是正则表达式

正则表达式是由普通字符(如a到z)以及特殊字符(称为元字符)组成的文字模式,该模式描述在查找文字主体时待匹配的一个或者多个字符串。作为一个模板,将字符模式与所搜索的客串进行匹配。

关于元字符与匹配内容可以参考这张表:正则匹配表

2.怎么创建正则表达式

var re = new RegExp();//RegExp是一个对象,和Aarray一样
//但这样没有任何效果,需要将正则表达式的内容作为字符串传递进去
re = new RegExp(“a”);//最简单的正则表达式,将匹配字母a 可简写为“var re = /a/”
re = new RegExp(“a”,”i”);//第二个参数,表示匹配时不分大小写

RegExp构造函数第一个参数为正则表达式内容,而第二个参数则为可选项标志,而且可以组合使用。可选标志如:

  • g (全文查找)
  • i (忽略大小写)
  • m (多行查找)

var re = new RegExp(“a”,”gi”);
//匹配所有的a或A。可简写为“var re = /a/gi”

3.正则表达式对象的方法

三种方法分别是test,exec,compile:

  • test:返回一个Boolean值,它指出在被查找的字符串中是否存在模式。
  • exec:用正则表达式模式在字符串中运行查找,并返回包含该查找结果的一个数组。
  • compile:把正则表达式编译为内部格式,从而执行得更快。

4.正则表达式的属性

常用的有以下几种:

  • source:返回表达式文本的复本。只读。
  • lastIndex:返回字符位置,它是被查找字符串中下一次成功匹配的开始位置。
  • $1…$9:返回九个在模式匹配期间找到的、最近保存的部分。只读。
  • input ($_):返回执行规范表述查找的字符串。只读。
  • lastMatch ($&):返回任何正则表达式搜索过程中的最后匹配字符。只读。
  • leftContext ($`) :返回被查找的字符串中从字符串开始位置到最后匹配之前的位置之间的字符。只读。
  • rightContext ($’) 返回被搜索的客串中从最后一个匹配位置开始到字符串结尾之间的字符。只读

5.动手测试正则表达式是如何工作的

用test方法测试是否匹配模式:

var re = /he/;        //最简单的正则表达式,将匹配he这个单词
var str = “he”;
alert(re.test(str));  //用test方法测试是否匹配,返回true
str = “we”;
alert(re.test(str));  //false
str = “HE”;
alert(re.test(str));  //false
re = /he/i;           //加上可选标识i(ignoreCase)来忽略大小写
alert(re.test(str));  //true
str = “yeah~he loves her”;
alert(re.test(str));  //true

脱字符(^)开头匹配:(查表看看什么是脱字符

re = /^he/i;
alert(re.test(str));  //false,因为he不在str最开始
str = “He is a good guy!”;
alert(re.test(str));  //true

美元符($)末尾匹配:

re = /^he$/i;         //$表示字符结束位置
alert(re.test(str));  //返回false说明”he is a good guy”不是以he结尾
str = “He”;
alert(re.test(str));  //返回true

(\s)空白字符匹配:(包括空格,制表符,换行,换页等)

str = “user Name”;
re = /\s/;
alert(re.test(str));  //str=”user\nName”也将返回true

方括号([ ])范围匹配:

re = /^[a-z]/i;        //匹配开头为a~z中任意字符并且不区分大小写
str = “variableName”;
alert(re.test(str));  //true
str = “123variableName”;
alert(re.test(str));  //false

用exec方法测试哪些字符匹配了模式:

var osVersion = “Ubuntu 8″;
var re = /^[a-z]+\s+\d+$/i;  //+表示字符至少出现1次,\d表示一个数字
//这个正则表示:匹配 以a~z中任意字母为开头、至少有一个空白字符、至少有一个数字结尾的字符串
alert(re.test(osVersion));   //true
re = /^[a-z]+\s+\d+$/i;
arr = re.exec(osVersion);
alert(arr[0]);     //将osVersion完整,因为它刚好匹配re
//我们只想取出数字..
re=/\d+/;
arr = re.exec(osVersion);
alert(arr[0]);     //返回8

复杂一点的子匹配:

re = /^[a-z]+\s+(\d+)$/i;    //用()来创建子匹配
arr = re.exec(osVersion);
alert(arr[0]+”\n”+arr[1]);   //arr[1]为第一个子匹配也就是版本号8
osVersion = “Ubuntu 8.10″;
re = /^[a-z]+\s+(\d+)\.(\d+)$/i;    //.是正则中的元字符需要转义即“\.”表示输出一个.号
arr = re.exec(osVersion);
alert(“完整版本:”+arr[0]+”\n大版本号:”+arr[1]+”\n字版本号:”+arr[2]);

休息一下精彩继续…

JavaScript正则表达式学习笔记<1>》上有 23 条评论

  1. Pingback 引用通告: JavaScript正则表达式学习笔记(转载) - 正则表达式社区

  2. 可以分享一下不?如果转不出来ISO的我可以告诉你怎么转.之前我在电驴上面就有分享java26日通的,要是愿意的话麻烦共享一份给我啊.谢谢了.

  3. kily,来你这里发广告的人越来越多啦^_^
    我第一次学正则时,是张孝祥的javascript体验,感觉那个好难懂啊.看长点的,头会转晕!

    • @踏雪残情 所以刚装了验证码插件,效果挺好的。
      我也看过张孝祥的教程,也没看懂,这个好多了。有兴趣的话去那个连接买个盘慢慢看哦。物超所值。

发表评论

电子邮件地址不会被公开。 必填项已用 * 标注

*

您可以使用这些 HTML 标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

注意: 评论者允许使用'@user空格'的方式将自己的评论通知另外评论者。例如, ABC是本文的评论者之一,则使用'@ABC '(不包括单引号)将会自动将您的评论发送给ABC。使用'@all ',将会将评论发送给之前所有其它评论者。请务必注意user必须和评论者名相匹配(大小写一致)。