正则表达式: 是对字符串操作的一种逻辑公式,就是用事先定义好的一些字符,及这些特定字符的组合,组成一个‘规则字符串’,这个规则字符串用来表达对字符串的一种过滤逻辑,简单地说就是规定文本检索的内容,通常用来检索、替换文本。
1. 创建正则表达式
正则对象RegExp,又称为正则表达式;
创建方式:
- 构造函数创建;
new RegExp(检测内容,修饰符) var reg1 = new RegExp(/\d/.); console.log(reg1);
- 字面量创建;
var reg2 = /\d/; console.log(reg2);
2. 修饰符
g: global 进行一个全局的匹配;
i: ignore case 进行一个不区分大小写的匹配;
var str = "fd1t4fsf6fds8fds5fs";
console.log(str.replace(/\d/, "-"));//一次换一个
console.log(str.replace(/\d/g, "-"));//全局替换
var str1 = "hello world --- hello World";
console.log(str1.replace(/world/g, "javascript"));
console.log(str1.replace(/world/ig, "javascript")); //不区分大小写匹配
3. 正则检索方法
1. 正则提供的检索方法
- test:检索字符串中是否包含正则要检索的内容,有则返回true,没有返回false;
var str = "sfdf4fd"; var reg = /\d/;//数字 console.log(reg.test(str));
- exec:进行具体检索,检索到正则规定的内容返回一个数组,找不到返回null;
var str1 = "sfdf4fd5";
var reg1 = /\d/;
console.log(reg1.exec(str1));-->["4", index: 4, input: "sfdf4fd5", groups: undefined]
2. 字符串的方法操作正则表达式
- replace:替换正则匹配的字符串
var s = "web ui"; var reg = /ui/; console.log(s.replace(reg,"JavaScript"));--> web JavaScript;
- split:按正则匹配的内容拆分数组
var str = "fd1t4fsf6fds8fds5fs"; console.log(str.split(/\d/)); -->["fd", "t", "fsf", "fds", "fds", "fs"]
- match:返回正则匹配到内容,跟exec方法一样
var arr = str.match(/\d/g); console.log(arr); -->["1", "4", "6", "8", "5"]
- search:找一个字符串在另一个字符串中首次出现的位置,有返回对应的下标,没有返回-1
console.log(str.search(/\d/)); -->2
4. 正则对象字符
-
单个字符和数字
元字符/元符号 匹配情况 . 匹配除换行符以外任意字符 [] 匹配括号中的字符集中的任意元素 [^] 匹配除字符集中任意一位字符 \d 匹配数字 \D 匹配非数字 \w 匹配数字、字母、下划线(_) \W 匹配非数字、字母、下划线 (_) \s 匹配空白字符、空格、制表符和换行符 \S 匹配非空白字符 -
锚字符
元字符/元符号 匹配情况 ^ 行首匹配 $ 行尾匹配 -
重复字符
元字符/元符号 匹配情况 x? 匹配0个或者1个x x* 匹配0次或者任意多个x x+ 匹配至少一个x (xyz)+ 匹配至少一个(xyz) a{n,m} 匹配最少m个、最多n个x -
其他字符
元字符/元符号 匹配情况 (string) 用于反向引用的分组 |
或 \1或$1 匹配第一个分组中的内容 \2或$2 匹配第二个分组中的内容 \3或$3 匹配第三个分组中的内容 ?: 非获取匹配 ?= 正向肯定预查(匹配到的元素后边必须跟什么) ?! 正向f否定预查(匹配的字符后面不能跟什么) ?<= 反向肯定预查 ?<! 反向否定预查