正则表达式 (regExp): 规则表达式
可以根据规则 匹配想要的字符串 ;是对字符串的操作 ;
创建正则表达式
方式一: 字面量创建 /规则/
例:
let reg = /a/; // 匹配a字符; 查看字符串中是否包含a
let reg = /ab/;
let str = "fdaaaaabfds";
console.log(reg.test(str));
console.dir(reg);
方式二: 内置构造函数创建正则s
let reg = new RegExp("a");
let str = "fdfds";
console.log(reg.test(str));
区别 :对于变量的解析
let a = "hello";
let reg1 = /a/; // 等同于 let reg1 = new RegExp("a");
let reg2 = new RegExp(a); // 等同于 let reg2 = new RegExp("hello");
元字符 : 在正则里有特殊含义的字符 。
- . 匹配非行换的任意字符
例:
let reg = /./;
let str = `\n`;
console.log(reg.test(str));
- \ 转义字符
需要匹配是否有 . 这个字符;
例:
let reg = /./;
let str = "baidu.com";
console.log(reg.test(str));
- \s 匹配空格
例:
let reg = /\s/;
let str = "fda fds";
console.log(reg.test(str));
- \S 匹配非空格
例:
let reg = /\S/;
let str = " safd";
console.log(reg.test(str));
5.\d 匹配数字
例:
let reg = /\d/;
let str = "fdafddfas";
console.log(reg.test(str));
6.\D 匹配非数字
例:
let reg = /\D/;
let str = "aa";
console.log(reg.test(str));
7.\w 匹配数字字母下划线 ;
例:
let reg = /\w/;
let str = "dfsad";
console.log(reg.test(str));
8.\W 匹配非 数字字母 下划线
例:
let reg = /\W/;
let str = "fdsafdsa";
console.log(reg.test(str));
字符数量限定
-
- : 代表 0 次到无限次 ;
例:
let reg = /a*/;
let str = "fdsfads";
console.log(reg.test(str));
- ? : 出现0次到1次 ;
例:
let reg = /fa?f/; // ff 或者 faf
let str = "fdsfafdfsd";
console.log(reg.test(str));
-
- : 出现1次到无限次;
例:
let reg = /ab+c/;
let str = "facd";
console.log(reg.test(str));
- 字符出现指定次数 {n}
例:
let reg = /a\d{4}c/;
let str = 'dafsa3242cfdfd';
console.log(reg.test(str));
5.字符出现 指定的 n 到 m 次 ; {n,m};
例:
let reg = /a\w{2,4}c/;
let str = 'fdsfdsafdc';
console.log(reg.test(str));
- n次到无限次 {n,};
例:
let reg = /a\d{1,}c/;
等同于
let reg = /a\d+c/;
let str = "fdasfa23424c";
console.log(reg.test(str));
特殊符号 1.以某个字符开头 ^
例:
let reg = /^a\d+/;
let str = "a432432dafds2342w34";
console.log(reg.test(str));
2.限定以某个字符结尾 : $
例:
let reg = /^a\d$/;
let str = "a4";
console.log(reg.test(str));
- | :或者
例:
let reg = /^aab|cdd$/; // 匹配 ab 或者是 cd
let str = "aabdd";
console.log(reg.test(str));
- () 分组
例:
let reg = /^100(km|nm)$/ ; // 把 k 和 n 进行分组
let str = "100km";
console.log(reg.test(str));
- [] : 集合 可以表示一些字符的集合 (1) 可以使用 - 连接
例:
let reg = /^[a-z]\d{3}$/; // 集合 需要连续的assci 码 。 且 集合代表一个字符
let str = "a123";
console.log(reg.test(str));
(2) 中括号里 自带或者关系
例:
let reg = /^1[13456789]\d{9}$/;
let str = "1389798734";
console.log(reg.test(str));
let reg = /^a[1-30]$/;
let str = "a2";
console.log(reg.test(str));
扩展 \d ---> [0-9] \w ----> [0-9a-zA-Z_];
(3) 中括号里的 ^ 箭头 : 非 的意思 ;
例:
let reg = /^a[^0-9]b$/;
let str = "a1b";
console.log(reg.test(str));
6.边界符 \b
例:
let str = "this a knife is";
匹配是否有 is 这个单词 ;
正则里有一个边界符 : \b : 开头 结尾 \W 都是边界;
let reg = /\bis\b/;
if(reg.test(str)){
console.log("有is单词");
}else{
console.log("没有is单词");
}
正则相关方法 正则相关方法 一、正则方法 :正则表达式 后跟的方法
1.正则.test(字符串)
例:
let reg = /\d/;
let str = "hellofds";
console.log(reg.test(str));
2.返还匹配到的内容 g: 默认正则是惰性模式,只会匹配一个 符合规则的内容 可以通过 g 修饰符 修饰全局匹配 i : 忽略大小写
例:
let reg = /\d+/g;
let str = "fdsafd1111fdsa2222dsa3333fdas";
console.log(reg.exec(str));
console.log(reg.exec(str));
console.log(reg.exec(str));
console.log(reg.exec(str));
let reg = /abc/ig;
let str = "dfasfdsaABCfdsa";
console.log(reg.test(str));
二、字符串正则方法 : 是字符串方法 可以使用正则表达式; 字符串方法 : 字符串开头的正则方法
- split(正则);
例:
let str = "fdsaf342dfsaf234sdaf324343fdas";
let reg = /\d+/;
let res = str.split(reg);
console.log(res);
2.match : 获取符合匹配的内容
例:
let str = "fdsafd23432fdsafds21312fdsaf324dfas";
let reg = /\d+/g;
let arr = str.match(reg);
console.log(arr);
3.search : 查找符合正则规则的字符串
例:
let reg = /\d+/;
let str = "fdsafdsa222fdsa";
console.log(str.search(reg));
4.replace : 替换
例:
let reg = /X+/ig;
let str = "fdsafdsfxxxxfdsafdxxfdsafdaxxxxxxfdsf";
// let res = str.replace(reg,"*");
let res = str.replace(reg, function (arg) {
// console.log(arg);
return "*".repeat(arg.length);
})
console.log(res);