正则的学习

常用简单元字符

 \bhi\b   \b是用来匹配单词的 匹配两个b之间的单词
 \. 匹配换行符以外任意的字符
 \w 匹配任意字母,数字,下划线
 \s 匹配任何空白字符串, 等价[\f\n\r\t\v]
 \d 匹配数字
 \un 匹配n,其中n是一个用四个十六进制数字表示的Unicode字符

限定符

  * >= 0 次
  ? 0次或1次
  + >=1次
  {n} 出现n次
  {n,} >=n次
  {n, m} 重复n到m次,包括n和m

“非”语义

 \W 大写W,匹配任意不是字母、数字和下划线的字符
 \S 大写S, 匹配任意不是空白字符的字符
 \D 匹配任意非数字字符
 \B 匹配不是单词开始或结束位置
[^aeiou] 匹配除了aeiou这5个字符以外的字符

"或"语义

  [aeiou] 方括号,aeiou字符中任选一个,方括号可以理解为从方括号里的字符中任选一个
  | 竖线,竖线前后任一正则满足即可,语义类似编程语言的逻辑“或”(短路?)

断言

  ^ 匹配字符串开始的位置
  $ 匹配字符串结束的位置

(?=exp) 匹配一个位置,要求这个位置后面能匹配表达式exp
(?!exp) 匹配一个位置,要求这个位置后面不能匹配表达式exp

想表达"或"的意思 ------ 字符簇和分歧

    [abc]表示 a、b、c这三个字符中的任意一个  
    [b-f]表示从b到f这么多字符中任选一个

括号的三个作用

1、括号的第一个作用 ---- 把分组当作一个整体看待
2、分组匹配到的内容也就是这个分组捕获到的内容,从左往右,以左括号为标志,每个分组会自动拥有一个从1开始的编号,分组捕获到的内容可以通过\分组编号的形式进行后向引用。 (ab|cd)123\1 -- \1就是后向引
3、括号第三个作用,可以改变优先级

修饰符(匹配选项)

  加g修饰符  表示全局匹配
  加i修饰符   表示不区分大小写
  加m修饰符  表示多行模式 会改变^和$的行为

RegExp 上用来匹配提取的方法 ----- exec()

  var matches = pattern.exec(str);                 //接受一个参数:源字符串  结果数组,在没有匹配项的情况下返回null

RegExp上用来测试匹配成功与否的方法 ----- test()

  var result = pattern.test(str)                // 接受一个参数,源字符串 返回: 找到匹配项 返回true 没找到返回false

String类型上的模式匹配方法

  1、匹配捕获的match方法

   str.match(pattern)  => pattern.exec(str)

  2、 返回索引search 方法

  str.search(pattern) ==> 返回的是 pos  索引的位置

  3、查找并替换的replace方法

  str.replace(RegExp or String, String or Function);  
  第一个参数(查找)
  第二个参数(替换内容)

  第二个参数是一个函数

  在只有一个匹配项的情况下,会传递3个参数给这个函数:模式的匹配项、匹配项在字符串中的位置、原始字符串

  在有多个捕获组的情况下,传递的参数是模式匹配项、第一个捕获组、第二个、第三个...最后两个参数    是模式的匹配项在字符串位置、原始字符串

 这个函数要返回一个字符串,表示要替换掉的匹配项

转义

  前面加一个\ 表示转义

推荐阅读更多精彩内容