JS中的正则表达式简解

在这里插入图片描述

作用:

用来检索、替换那些符合某个模式(规则)的文本。

定义规则

<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.修饰符

修饰符含义
iignore (不区分大小写)
gglobal(全局查找)

应用

  • 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>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值