首页 > 其他 > 详细

读书笔记——正则表达式

时间:2015-10-16 00:53:33      阅读:338      评论:0      收藏:0      [点我收藏+]

1 什么是RegExp

  RegExp 是正则表达式的缩写,而正则表达式是一个字符串。一种查找规则的表示形式,用来描述要检索的内容。 正则表达式可用来解析、格式查找、替换等等。

  tip:()是表示子表达式。eg:/(\w)/s*中\w为子表达式

2 定义RegExp对象

  两种方式:直接量/pattern/attribute        构造函数 new RegExp(pattern,attributes);    其中pattern是字符串?? attributes是一个可选字符,包括“g”(全局匹配)“i”(匹配不区分大小写)“m”(多行匹配)??

  eg:var reg1=new RegExp("abc","g"); var reg3=new RegExp("\w");    

       var reg2=/abc/g;   var reg4=/\w/;

3 方法

  RegExp对象具有三个方法:

  1.   RegExpObject.test(string);  用于检测一个字符串是否匹配某种模式;返回值true/false;

  eg:var str = "ab c";   var patt1 = new RegExp("b c");   var result = patt1.test(str);   返回true。

  2.   RegExpObject.exec(string);用于检索字符串中的正则表达式的匹配;如果不匹配,返回null,如果匹配,返回一个数组,数组的第0个元素是与正则表达式相匹配的文本,第1个元素是RegExpObject的第1个子表达式相匹配的文本,以此类推。???数组有三个属性:length(长度,从1开始)  index(在string中匹配文本的第一个字符的位置,从0开始)  input(被检索的字符串)

      exec()的执行即是是带有g的情况下,也只是返回第一次匹配到的结果,将RegExpObject的lastIndex属性设置为这个匹配文本的最后一个字符的下一个位置。所以,用exec()方法来比例字符串的所有匹配文本,需要反复调用exec(),当找不到时,返回null,同事lastIndex属性重置为0.var str = "abc abc"; var reg = new RegExp("a","g");

while ((result = reg.exec(str)) != null)  {
  document.write(result);
  document.write(patt.lastIndex);
 }// a 1 a 5

   所以,要注意要需要重新检索同一个string的时候,将lastIndex属性归0,而不是保留上一次的结果。

  3.  RegExpObject.compile(regexp,modifier)用于改变和重新编译正则表达式。

       eg:reg=/\w/g; reg=/man/g;  reg.comile(reg); 重新编译   reg=/\w/g;  reg.compile("d");改变 ????

4 其他支持正则表达式的String对象的方法

   1.   stringObject.search(regexp)  用于检索字符串中指定的子字符串,或检索与正则表达式相匹配的子字符串;返回stringObject中第一个与regexp相匹配的子串的起始位置。 如果没有,返回-1.但是,该方法不执行全局匹配,忽略g。

   2.   stringObject.match(regexp)  用于在字符串内检索指定的值,或找到一个或多个正则表达式的匹配。返回存放匹配结果的数组或null

       如果没有g,那么方法只能执行一次,没有找到则返回null。否则,返回一个数组,数组的第0个元素存放的是匹配文本,其余缘故存放的是与正则表达式的子表达式匹配的文本。数组包含两个属性,ingdex是匹配文本的起始字符在stringObject中的位置,input是对stringObject的引用。

      如果有g,则match()方法执行全局检索,找到stringObject中所有匹配子字符串。没有返回null,有则返回数组,数组没有index和input属性。

  3.  stringObject.replace(regexp/substr,replacement) 用于在字符串中用一些字符替换另一些字符,或替换一个与正则表达式匹配的子串。返回的是新的字符串。

      如果有g则为全局替换,否则替换第一次匹配字符。从匹配模式得到的字符串可用于替换。

      $1...$99为regexp中第1到第99个子表达式相匹配的文本。

      $&为regexp相匹配的子串。???感觉是原本的字符串

     $`位于匹配子串左侧的文本

     $‘位于匹配子串右侧的文本

     $$直接量符号???

     如果replacement为函数,每个匹配都会调用该函数,函数的第1个参数是匹配模式的字符串,然后是子表达式匹配的字符串,接着是匹配在stringObject中的位置,最后是stringObject本身。函数返回的值将作为替换文本使用,每一匹配调用函数,得到的返回值替换这次匹配的文本。

  4. stringObject.split(separator,howmany)作用是把一个字符串分割成字符串数组。返回的是一个数组,其中数组并不包含separator。但是,如果正则表达式是含有自表达式的正则表达式,那么返回的数组中包含这些子表达式匹配的字串(单不包含与整个正则表达式匹配的文本)。

     如果用“”作为separator,那么每一个字符之间都会被分割。

5.符号

  1.  方括号[]

       用于查找某个范围内的字符。

      [abc]查找a、b、c中任何一个字符  eg:/[ab]/

     

读书笔记——正则表达式

原文:http://www.cnblogs.com/ClaireHu/p/4884013.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!