1.正则表达式概述
是一个对象,用来匹配字符串的规则
主要作用:
- 匹配
- 替换
- 提取
2.正则表达式在JS中使用
2.1 正则表达式的创建
-
通过 RegExp对象来创建 正则表达式
var regexp = new RegExp(正则表达式,模式); console.log(regexp);
- 这种方法用的少
-
利用字面量创建 正则表达式
var rg = /123/;
- 一般都使用此方法创建
2.2检测正则表达式 (★★★)
- reg.test(要校验的字符串) 正则对象方法,用于检测字符串是否符合该规则,该对象会返回 true 或 false,其参数是测试字符串。
var rg = /123/;
console.log(rg.test(123));//匹配字符中是否出现123 出现结果为true
console.log(rg.test('abc'));//匹配字符中是否出现123 未出现结果为false
3.正则表达式中的特殊字符
3.1边界符
边界符 | 说明 |
---|---|
^ | 表示匹配行首的文本(以谁开始) |
$ | 表示匹配行尾的文本(以谁结束) |
- 如果 ^和 $ 在一起,表示必须是精确匹配。
var rg = /abc/; // 正则表达式里面不需要加引号 不管是数字型还是字符串型
// /abc/ 只要包含有abc这个字符串返回的都是true
console.log(rg.test('abc'));
console.log(rg.test('abcd'));
console.log(rg.test('aabcd'));
console.log('‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐');
var reg = /^abc/;
console.log(reg.test('abc')); // true
console.log(reg.test('abcd')); // true
console.log(reg.test('aabcd')); // false
console.log('‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐');
var reg1 = /^abc$/; // 精确匹配 要求必须是 abc字符串才符合规范
console.log(reg1.test('abc')); // true
console.log(reg1.test('abcd')); // false
console.log(reg1.test('aabcd')); // false
console.log(reg1.test('abcabc')); // false
3.2 字符类
字符类 | 说明 |
---|---|
[] | 表示有一系列字符可供选择,只要匹配其中一个就可以了(多选一) |
[-] | - 代表的就是一个范围 |
[^] | 取反 |
var rg = /[abc]/; // 只要包含有a 或者 包含有b 或者包含有c 都返回为true
console.log(rg.test('andy'));//true
var rg1 = /^[abc]$/; // 三选一 只有是a 或者是 b 或者是c 这三个字母才返回true
console.log(rg1.test('aa'));//false
var reg = /^[a‐z]$/ //26个英文字母任何一个字母返回 true ‐ 表示的是a 到z 的范围
console.log(reg.test('a'));//true
- 字符组合
var reg1 = /^[a‐zA‐Z0‐9]$/; // 26个英文字母(大写和小写都可以)任何一个字母返回true
//取反 方括号内部加上 ^ 表示取反,只要包含方括号内的字符,都返回 false 。
var reg2 = /^[^a‐zA‐Z0‐9]$/;
console.log(reg2.test('a'));//false
3.3 量词符
匹配的是这个量词前面这个字符出现的次数
量词 | 说明 |
---|---|
* | 相当于 >= 0 可以出现0次或者很多次 |
+ | 相当于 >=1 可以出现1次或者很多次 |
? | 相当于 1||0 重复1次或者0次 |
{n} | 可以重复n次 |
{n,} | 至少出现n次 |
{n,m} | 可以重复 大于等于n 并且 小于等于m 次 |
- 注意:{n,m} 中间不要有空格
3.4 括号总结
-
中括号[]:字符集合.匹配方括号中的任意字符
var reg = /^[abc]$/ //代表 a也可以 b也可以 c也可以 a || b || c
-
大括号{} 量词符.里面表示重复次数
var reg = /^abc{3}$/ //代表它只让 c 重复三次 abccc
-
小括号() 表示优先级
var reg = /^(abc){3}$/ //代表它只让 abc 重复三次
3.5 预定义类
指的是某些常见模式的简写方式。
预定类 | 说明 |
---|---|
\d | 匹配0-9之间的任一数字,相当于 [0-9] |
\D | 除了数字都能匹配 |
\w | 匹配任意的字母、数字和下划线,相当于[A-Za-z0-9] |
\W | 匹配的是 非数字 字母 下划线 |
\s | 匹配空格 换行,相当于 [\t\r\n\v\f] |
\S | 匹配的 非 空格 |
- 正则里面的或者用 | 表示
正则表达式在线测试:https://c.runoob.com 菜鸟工具
4.正则替换replace
replace 是 字符串的方法
正则的参数
/正则表达式/g
- g:全局匹配
- i:忽略大小写
- gi:全局匹配+忽略大小写