Javascript正则表达式笔记 一

ricoyu 2010-01-15

^       The caret (^) tells the regular expression that the character must not match the

          characters  to follow.
         比如要匹配所有除了a或b的字符,字符类可以这么写[^ab]
^      定位符规定匹配模式必须出现在目标字符串的开头
        那是否说^ [ ] 里面 就表示排除(负向类) ,在[ ] 前面 就表示要在开头 ?
$      定位符规定匹配模式必须出现在目标对象的结尾

-      范围类,如要匹配a到z的所有字母,字符类可以这么写[a-z]

{n}   出现多少次

/^[0-9]{7}$/    匹配的就是一个仅包含7个数字的字符串


7.1 RegExp 对象可以有一个或两个参数.
      var reCat = new RegExp ("cat")                      //这个表达式只会匹配字符串中出现的第一个"cat"
      var reCat = new RegExp ("cat","g")                //匹配所有出现的"cat"

     正则表达式字面量
     var reCat = /cat/gi ;   注意字面量不需要放在引号里

     判断某个字符串是否匹配指定的模式
     RegExp.test(str)                   如果给定的字符串匹配这个模式,返回true ,否则返回false .                    reCat.test("cat")   //返回true

     RegExp. exec(str)                 返回一个数组 ,数组中第一个条目是第一个匹配,其他是反向引用

     String.match(reCat)            返回一个包含在字符串中的所有匹配数组
                                               var toMatch = "a bat, a cat, a fAt baT, a faT cat";
                                               var reAt = /at/gi;
                                               var arrMatchs = toMatch.match(reAt);
                                               返回一个数组["at","at","At","aT","aT","at"]

     String.search(reCat)           与indexOf 类似,返回在字符串中出现的第一个 匹配的位置 ,全局匹配表达式g 在这里不起作用    toMatch.search(reAt);    //输出3

     String.replace(matchStr, replaceStr)             
                                               用第二个参数替换 某个子串(第一个参数)的所有匹配 . 第一个参数 既可以是匹配的字符串 ,也可以是用于匹配的一个正则表达式 ,
                                               返回是替换后的整个字符串
                                               var sToChange = "The sky is red";
                                               var reRed = /red/;
                                               sToChange.replace(reRed,"blue" );    //输出The sky is blue    

     String.split(reCat)              将字符串分割 成子串,作为数组 返回
                                              var sColor = "red, blue, yellow";
                                              var reExp = /\,/;
                                              var arrs = sColor.split(reExp);    //得到一个数组["red","blue","yellow" ]   注意逗号 在正则表达式有
                                                                                                                        特殊含义 ,这边需要转义               

7.2  简单模式(元字符 ,字符类 ,量词 )
元字符      12个   ( [ { \ ^ $ | ) ? * + .       要匹配字符串中的元字符,需要转义   /\^/
注意var reMark = new RegExp("\\^"); 当正则表达式以非字面量的形式 表示时,所有的反斜杠"\" 都要用两个反斜杠"\\" 来替换.因为javascript字符串解析器
会按照翻译\n 的方式尝试翻译\?.为了保证不会出现这个问题,在元字符的前面加上两个反斜杠,
我们称之为双重转义 .(不太懂这个解释,我的理解是\ 本身也是元字符,先要对它转义得到
"\" ,然后再用这个"\" 对接下来的元字符转义)

预定义的特殊字符

\t

制表符

\n

换行符

\r

回车符

\f

换页符

\a

Alert 字符

\e

Escape 字符

\cX

X 相应的控制字符

\b

回退字符

\v

垂直制表符

\o

空字符




字符类
         将一些字符放入方括号中 .

1, 简单类     
   var toMatch = "a bat, a cat, a fAt baT, a faT cat";
   var reg = /[bcf]at/gi ;
   var arrs = toMatch.match(reg);     返回的数组[“bat”, “Cat”, “fAt”, “baT”, “faT”, “cat”]

2,负向类      可以指定要排除的字符 ,^ 要在[ ] 里面
   匹配除了 ab 以外的所有字符,那么这个字符类为[^ab] . 脱字符^ 告诉正则表达式字符不能匹配后面 跟着的字符
   只想获得包含at但不能以b或c开头的字符, /[^bc]at/gi

3, 范围类
   [a-z] 匹配所有小写字母
   结合负向类可以排除给定范围内的所有字符 ,例如要排除字符1~4,可以使用类[^1-4]

4, 组合类
   [a-z1-9\n]

Global site tag (gtag.js) - Google Analytics