作用:
用来检索、替换那些符合某个模式(规则)的文本。
定义规则:
<script>
const str = '春眠不觉晓, 春暖花开'
// 1.定义规则
const reg = /春/
</script>
1.是否匹配 test()
<script>
// test => 返回boolen值
console.log(reg.test(str)); // /春/
// exec = >返回一个数组
console.log(reg.exec(str)); // ['春', index: 0, input: '春眠不觉晓, 春暖花开', groups: undefined]
</script>
2.元字符
2.1.边界符
边界符表示位置,必须用什么开头,用什么结尾
<script>
// ^哈 => 必须以哈开头
console.log(/^哈/.test('哈哈哈')); // ture
// 哈$ => 必须以哈结尾
console.log(/哈$/.test('哈哈哈')); // ture
// ^哈$ => 精确匹配
console.log(/^哈哈哈$/.test('哈哈哈')); // ture
</script>
2.2.量词
量词表示重复次数
符号 | 含义 |
---|---|
* | 重复 0 次或更多次 |
+ | 重复 1 次或更多次() |
? | 重复 0 次或 1 次 |
{n} | 重复 n 次 |
{n,} | 重复 n 次或更多次 |
{n, m} | 重复 n 次到 m 次 |
- 代码示例
<script>
console.log(/^哈*$/.test('哈'));
console.log(/^哈+$/.test('哈')); // => 一个哈已经代表重复一次,没有哈才代表重复0次
console.log(/^哈?$/.test('哈'));
console.log(/^哈{3}$/.test('哈哈哈哈哈'));
console.log(/^哈{4,}$/.test('哈哈哈哈哈'));
console.log(/^哈{4,10}$/.test('哈哈哈哈'));
</script>
2.3.字符类[]
字符类用[]
<script>
// 只要包含abc中的一个都可以,可以多个
console.log(/[abc]/.test('jia')); // ture
</script>
字符
[]
+ 精确匹配
<script>
// 只要包含abc中的一个就可以,不能多个
console.log(/^[abc]$/.test('jia,back')); // false,有两个a
// 只要英文字母都行,不能多个
console.log(/^[a-z]$/.test('j')); // ture
console.log(/^[A-Z]$/.test('J')); // ture
// 0-9
console.log(/^[0-9]$/.test('7')); // ture
// 复合写法
console.log(/^[0-9A-Za-z]$/.test('7')); // ture
</script>
^
表示取反
<script>
// 除了英文字母和数字为true
console.log(/^[^0-9A-Za-z]$/.test('-')); // ture
</script>
- 应用
<script>
// 腾讯QQ号(从10000开始)
// {4,}重复的是 [0-9]
console.log(/^[1-9][0-9]{4,}$/.test('3400316021')); // ture
</script>
3.预定义
对某些
正则表达式
常见模式的简写方式,可以等效替换对应正则表达式
常见预定义
预定义符 | 对应正则表达式 | 备注 |
---|---|---|
\d | [0-9] | 略 |
\D | [^0-9] | 略 |
\w | [A-Za-z0-9] | 略 |
\W | [^A-Za-z0-9] | 略 |
\s | [\t\r\n\v\f] | 匹配空格(包括换行符,制表符,空格符等) |
\S | [^\t\r\n\v\f] | 匹配非空格字符 |
4.修饰符
修饰符 | 含义 |
---|---|
i | ignore (不区分大小写) |
g | global(全局查找) |
应用
replace()
,字符串替换- 加入
i
修饰,不区分大小写替换
<script>
const str = 'java是一门编程语言,JAVA.........'
// 不区分大小写替换
str.replace(/java/i, 'JS')
console.log(str);
// 替换完有返回值,需要变量接收
const new_str = str.replace(/java/i, 'JS')
console.log(new_str); // JS是一门编程语言,JAVA
</script>
加入g
修饰,可以替换多个
<script>
const new_str2 = str.replace(/java/ig, 'JS')
console.log(new_str2); //JS是一门编程语言,JS
</script>
也可以用|
代替 i
<script>
const new_str3 = str.replace(/java|JAVA/g, 'JS')
console.log(new_str3); // JS是一门编程语言,JS
</script>