• 正则表达式



    📃个人主页:不断前进的皮卡丘
    🌞博客描述:梦想也许遥不可及,但重要的是追梦的过程,用博客记录自己的成长,记录自己一步一步向上攀登的印记


    RegExp是正则表达式的缩写,使用正则表达式可以对某一个文本进行模式匹配,我们可以把它看成是对字符串描述的一种规则

    1.RegExp的定义

    • 直接量语法

    语法:/匹配规格/修饰符

    • RegExp对象的语法

    语法:new RegExp(匹配规则,修饰符)

    // 正则表达式:字符串的匹配规则
    			
    			// 定义正则表达式,方式1
    			let regExp1 = /abc/  /* 判断是否包含字符串abc */
    			
    			// 定义正则表达式,方式2
    			let regExp2 = new RegExp('abc')  /* 判断是否包含字符串abc */
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    2.RegExp的方法

    • test:检索字符串中指定的值,返回true或者false
    • exec:检索字符串中指定的值,返回找到的值,并且确定它的位置
    • image.png

    3.string和正则有关的方法

    • match:找到一个或者多个正则表达式的匹配
    • replace:替换和正则表达式匹配的子串
    • split:把字符串分割为字符串数组
    var rep=/abc/; //正则规则是否包含abc
    var str='abcdefgabcde'.replace(rep,'x');
    console.log(str);
    
    • 1
    • 2
    • 3

    4.修饰符

    修饰符描述
    i执行对大小写不敏感的匹配
    g执行全局匹配

    image.png
    image.png
    image.png

    5.元字符

    元字符是有特殊含义的字符

    字符描述
    .匹配除了"\n"以外的任何单个字符
    \d匹配一个数字字符
    \D匹配一个非数字字符
    \s匹配任何空白字符,包括空格,制表符,换页符等
    \S匹配任何非空白字符
    \w匹配包括下划线的任何单词字符,等价于’[A-Z,a-z,0-9]’
    \W匹配任何非单词字符
    	
    			/* 
    				元字符:
    				.  表示任意一个字符
    				\s 表示空格
    				\S 表示非空格
    				\d 表示数字
    				\D 表示非数字
    				\w 表示字母或数字
    				\W 表示非字母或数字			 
    			 */
    			
    			let regExp = /\d/
    			console.log('aa11bb', regExp.test('aa11bb'))
    			
    			console.log(/\s/.test('aa11bb'))
    			
    			console.log(/\w/.test('中国1'))
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

    image.png

    6.前后缀

    字符描述
    ^匹配输入字符串的开始位置
    $匹配输入字符串的结束位置
    
    			/* 
    			   ^: 前缀,表示以什么开头
    			   $: 后缀,表示以什么结尾
    			 */
    			
    			console.log(/^\d/.test('abc'), /^\d/.test('ab2c'), /^\d/.test('2abc'))
    			console.log(/^a/.test('abc'), /^ac/.test('abc'))
    			
    			console.log(/a$/.test('abca'), /\d$/.test('abc2'))
    			
    			//只有ab符合                    //1+数字才符合
    			console.log(/^ab$/.test('ab'), /^1\d$/.test('15'))
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    7.量词

    字符描述
    +匹配前面的子表达式一次或者多次,比如zo+可以匹配zo以及zoo,但是不可以匹配z
    ?匹配前面的子表达式零次或者一次。比如do(es)?可以匹配do或does中的do
    {n}n是非负整数,匹配确定的n次,比如o{2}不可以匹配Bob中的o,但是可以匹配foot中的两个o
    {n,}n是非负整数,至少匹配n次,比如o{2,}不可以匹配Bob中的o,但可以匹配fooood中的所有o.o{1,}等价于o+,o{0,}等价于o
    {n,m}m,n都是非负整数,n<=m,最少匹配n次而且最多匹配m次
    	/* 
    				量词
    				+  表示至少1个
    				?  表示最多1个
    				{n} 表示n个
    				{n,} 表示至少n个
    				{n, m} 表示n个和m个之间			 
    			 */
    			
    			
    			console.log(/\d+/.test('aab2bcc'))
    			console.log(/\d?/.test('aabbcc'))
    			console.log(/\d{2}/.test('aab5da1dd5bcc'))
    			
    			console.log(/^1\d{3}$/.test('1342'))
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    image.png

    8.范围

    image.png

    	/* 
    				[xyz], 表示字母的范围,x或y或者z即可
    			    [1, 2, 3], 表示数值的范围,在1,2,3取1个
    				
    				取反
    				[^xy], 不能x或者y
    				
    				[a-z], 表示从a到z, 比如[c-h]
    				[A-Z], 表示从A到z
    				[1-5], 表示1到5
    				
    			 */
    			
    			
    			console.log(/[ab]/.test('ac'))
    			console.log(/^1[ab]\d$/.test('1ab5'))
    			console.log(/[^ab]/.test('ac'))
    			
    			console.log(/[b-e]/.test('xycz'))
    			console.log(/[2-6]/.test('x5ycz'))
    			
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21

    image.png

    9.小练习

    <!DOCTYPE html>
    <html>
    	<head>
    		<meta charset="utf-8">
    		<title></title>
    		
    		<script src="common.js"></script>
    		
    		<script>
    			
    			// 需求:判断一个字符串是否是标准的手机号码
    			let phone = '18688888888'
    			
    			let flag = isPhone(phone)
    			
    			if(flag) {
    				// 进行下一步
    				alert('正确的手机号码')
    			} else {
    				// 拦截提示
    				alert('请输入正确的手机号码')
    			}
    			
    		</script>
    	</head>
    	<body>
    	</body>
    </html>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    // 判断一个字符串是否是标准的手机号码
    function isPhone(phone) {
    	
    	// 定义手机号码的正则规则
    	 
    	//后面八位都是数字
    	let regExp = /^1[3,5,8][5,6]\d{8}$/
    	
    	console.log(phone)
    	console.log(regExp.test(phone))
    	
    	return regExp.test(phone);
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    image.png

  • 相关阅读:
    Java集合框架【二容器(Collection)[ArrayList]】
    网页翻译插件
    内存占用问题
    第二证券|沪指冲上3200点,中字头太火爆!
    华为机试真题 C++ 实现【执行时长】【GPU算力】
    Java注解详解以及如何实现自定义注解
    SMTP 协议研究
    基于C语言实现朴树算法树链的路径问题
    学c语言可以过CCT里的c++吗?
    面试:“索引背后的数据结构是什么样的?”,五分钟带你了解“B树,B+树”
  • 原文地址:https://blog.csdn.net/qq_52797170/article/details/126445198