正则表达式是在宿主环境下运行的,如 js / php / node.js 等

声明定义

字面量

* 使用 // 包裹
* 常用于静态创建正则表达式

  1. var str = "Hello World";
  2. var reg = /e/;
  3. console.log(reg.test(str)); // true

// *中不能使用变量,可以使用 eval 将变量解析到正则中。 不推荐,存在变量时,使用对象形式创建
*
eval 可能会导致浏览器插件(vue插件等)报 unsafe-eval 异常,不推荐使用**

  1. var str = "Hello World";
  2. var letter = "a";
  3. var reg = `/${letter}/`;
  4. console.log(eval(reg).test(str)); // false or "unsafe-eval error"
  5. console.log(reg.test(str)); // error: reg.test is not a function

new RegExp()

* 常用于动态创建正则表达式

  1. var str = "Hello World";
  2. var letter = "o";
  3. var reg = new RegExp(letter);
  4. console.log(reg.test(str)); // true

修饰符

|

选择修饰符 左右两侧匹配一个即可

  1. var str = "Hello World";
  2. console.log(/a|b|c|d/.test(str)); // true

\

转义字符 用于改变字符的含义,适用于字符有多种语义

**

^

边界字符 必须以匹配字符串开始

  1. var str = "www.baidu.com";
  2. console.log(/^www/.test(str)); // true, 必须以 www 开头

$

边界字符 必须以匹配字符串结束,忽略换行符

  1. var str = "www.baidu.com";
  2. console.log(/com$/.test(str)); // true, 必须以 com 结尾

元子字符

元字符是正则表达式中的最小元素,只代表单一(一个)字符

元字符 说明 示例
\d 匹配任意一个数字 [0-9]
\D 与除了数字以外的任何一个字符匹配 [^0-9]
\w 与任意一个英文字母、数字或下划线匹配 [a-zA-Z_]
\W 除了字母、数字或下划线外与任何字符匹配 [^a-zA-Z_]
\s 任意一个空白字符匹配,如空格,制表符\t,换行符\n [\n\f\r\t\v]
\S 除了空白符外任意一个字符匹配 [^\n\f\r\t\v]
. 匹配除换行符外的任意字符

正则表达式中存在字符*.** ,可以转义也可以不转义

模式修饰

切换正则表达式的执行方式

** 放在 // 右侧外部使用

修饰符 说明
i 不区分大小写字母的匹配
g 全局搜索所有匹配内容
m 视为多行
s 视为单行忽略换行符,使用. 可以匹配所有字符
y regexp.lastIndex 开始匹配
u 正确处理四个字符的 UTF-16 编码

**

i

  1. var str = "Hello World";
  2. str = str.replace(/hello world/gi, "hello world");
  3. console.log(str); // "hello world", 将 str 替换成小写

g

全局操作所有匹配的内容

  1. var str = "aaa bbb";
  2. str = str.replace(/a/, "b");
  3. console.log(str); // "baa bbb", 只替换首个匹配的字符
  4. str = str.replace(/a/g, "b");
  5. console.log(str); // "bbb bbb", 替换所有匹配的字符

m

将内容视为多行匹配 主要用于修饰 ^ 和 $

**

原子表

原子表 说明
[] 中括号中任意字符匹配
[^] 中括号中字符之外的任意字符匹配
[0-9] 匹配 0-9 任何一个数字
[a-z] 匹配 小写 a-z 任何一个字母
[A-Z] 匹配 大写 A-Z 任何一个字母

* [0-9] 、[a-z]、[A-Z] 必须为升序,否则报错

  1. var str = "Hello World1994";
  2. // []
  3. console.log(/[abc]/.test(str)); // false
  4. console.log(/[abcd]/.test(str)); // true
  5. // [^]
  6. console.log(/[^o]/.test(str)); // true
  7. console.log(/[^Hello World1994]/.test(str)); // false
  8. // [0-9]
  9. console.log(/[0-4]/.test(str)); // true
  10. // [a-z]
  11. console.log(/[a-z]/.test(str)); // true
  12. // [A-Z]
  13. console.log(/[A-G]/.test(str)); // false

原子组

一次匹配多个元子
原子组一次匹配多个元子,原子表一次匹配任意一个字符
** 元字符组