盒子
盒子
文章目录
  1. 创建方法
    1. 正则表达式直接量方式
    2. 构造函数方式
    3. flags几种规则
      1. js正则表达式的一些预定义的特殊字符
      2. js正则表达式的一些预定义类
      3. js正则表达式的量词(使用的频率高)
      4. js正则表达式的贪婪量词与惰性量词,捕获与非捕获组,正向前瞻

javascript中正则的直白理解

创建方法

  • 构造函数方式
  • 正则表达式直接量方式

正则表达式直接量方式

var expression=/pattern/flags
正则表达式的模式(pattern)部分:

构造函数方式

var pattern = new RegExp("")

由此可见创建一个正则表达式是很容易的, 较为困难的任务是用正则表达式描述字符的模式, 也就是上面pattern部分

目前就以直接量方式介绍.

flags几种规则

  • i(表示忽略匹配的字母大小写)
  • g(表示匹配全局)
  • m(表示多行匹配)

例子

1
2
var reg = new RegExp("a","i");//以忽略字母大小写的形式进行匹配
var reg2 = /a/i;//以忽略字母大小写的形式进行匹配

这里不具体介绍RegExp对象下的方法, 如果有需求请查阅mdn

遇到元字符需转义

js正则表达式中的元字符有:( [ { \ ^ $ | ) ? * + . 当要用到这些字符时要在前面加“ \ “

js正则表达式的一些预定义的特殊字符

字符 描述
\n 换行
\r 回车
\t 制表符
\f 换页符
\cX 与X对应的控制字符
\b 退格符(BackSpace)
\v 垂直制表符
\0 空字符(“”)

js正则表达式的一些预定义类

符号简写 符号 文字描述
\d [0-9] 匹配数字
\D [^0-9] 匹配非数字字符
\s [ \n\r\t\f\x0B] 匹配一个空白字符
\S [^ \n\r\t\f\x0B]  匹配一个非空白字符
\w [a-zA-Z0-9_] 匹配字母数字和下划线
\W [^a-zA-Z0-9_] 匹配除字母数字下划线之外的字符

js正则表达式的量词(使用的频率高)

符号 描述
*     表示前面紧跟着的字符至少有0个或者多个
+     表示前面紧跟着的字符至少有1个或者多个
?     表示前面紧跟着的字符只有0个或者1个
{n} 表示前面紧跟着的字符有n个
{n,m} 表示前面紧跟着的字符在n和m个之间
{n,} 表示前面紧跟着的字符至少有n个

js正则表达式的贪婪量词与惰性量词,捕获与非捕获组,正向前瞻

  1. 在使用正则匹配字符串时,一般地,当要匹配的字符串为’aaabbbccc’,/a+/匹配的是aaa,此为贪婪量词(即想要匹配更多的字符),而通过在”+”号后面加上”?”可变为惰性量词,此时只匹配字符串中的第一个a

  2. 一般地,当我们在正则表达式中加上一个括号时表示括号里的内容为要捕获的分组,比如:/^[a-zA-Z]+(\d+)$/,如果在括号里的内容前面加上”?:”时则表示此分组为非捕获组,即在最后返回的数组中不存在这个分组

  3. 关于捕获组,在正则表达式中通过RegExp访问$1,$2,$3….$9,可以获取第一个,第二个…第九个捕获组的内容

  4. 捕获出现在特定字符之前的字符,只有当字符后面跟着某个特定字符才去捕获它,相应的就有负向前瞻,表示当字符后面不跟着特定字符才去捕获它,正向前瞻在要指定的字符前加上”?=”,负向前瞻则是加上”?!”