js正则表达式第一课

121 阅读2分钟

正则表达式

用来处理字符串的规则

  • 只能处理字符串

  • 它是一个规则: 可以验证字符串是否符合某个规则(test);也可以把字符串中符合规则的内容捕获到(exec / match ...)

    /** 
    	例如: 
    	let str = "good good study . day day up !";
    	let reg = /\w+/;
    	
    	reg.test(str); // => true
    	reg.exec(str); // => ["good", index: 0, input: "good good study . day day up !"】
    */
    

编写正则表达式

创建方式有两种

// 字面量创建方式(两个斜杠之间包起来的,都是用来描述规则的元字符)
let reg1 = /\d+/;

// 构造函数模式创建 两个参数: 元字符字符串, 修饰符字符串
let reg2 = new RegExp("\\d+");

正则表达式由两部分组成

  • 元字符
  • 修饰符
/** 常用的元字符 */
/** 1.量词元字符,设置出现的次数
        * 		零到多次
        + 		一到多次
        ? 	   零次或者一次
        {n}  	出现n次
        {n,} 	出现n到多次
        {n,m} 	出现n到m次
    
    2. 特殊元字符: 单个或者组合在一起代表特殊的含义
        \ 		转义字符(普通->特殊->普通)
        . 		除\n(换行符)以外的任意字符
        ^ 		以哪一个元字符作为开始
        $ 		以哪一个元字符作为接受
        \n 		换行符
        \d 		0~9之间的一个数字
        \D 		非0~9之间的一个数字 (大写和小写的意思是相反的)
        \w 		数字、字母、下划线中的任意一个字符
        \s 		一个空白字符(包含空格、制表符、换页符等)
        \t 		一个制表符(一个Tab键,4个空格)
        \b 		匹配一个单词的边界
        x|y 	x或者y中的一个字符
    	[xyz]   x或者y或者z中的一个字符
    	[^xy]   除了x或者y以外的任意字符
    	[a-z]   指定a-z这个范围中的任意字符 [0-9a-zA-Z_] == \w
    	[^a-z]  上一个的去反"非"
    	() 		正则中的分组符号
    	(?:)	只匹配不捕获
    	(?=)	正向预查
    	(?!)	负向预查
     3. 普通元字符: 代表本身含义的
     列如: /dream/ 此正则匹配的就是 "dream"
*/

/** 正则表达式常用的修饰符: i m g
    i => ignoreCase 忽略单词大小写匹配
    m => multiline  可以进行多行匹配
    g => global 	全局匹配
*/

/** 例如: 
	忽略大小写
		/A/.test('lalal') => false
		/A/i.test('lalala') => true

*/