正则表达式-元字符和标识符

认识正则表达式 - RegExp

	JS 中的数据类型, 是一个复杂数据类型
        作用: 专门用来验证字符串是否符合规则

1.如何创建一个正则表达式

1.1 字面量方式创建

    语法: var reg = /abcd/
	意思: 当你使用这个 reg 正则去验证字符串的时候, 要求字符串中必须包含 abcd 这个字符片段
	验证: 'hjdasghjdabcdsdjgsahgdj'  true
	验证: 'sadadfbasdadcasdasdd'  false
 	var reg = /abcd/
 	console.log(reg.test('hjdasghjdabcdsdjgsahgdj')); // true
    console.log(reg.test('sadadfbasdadcasdasdd'));  // false

1.2. 内置构造函数创建

语法: var reg = new RegExp('abcd')var reg = new RegExp('abcd')
    console.log(reg.test('hjdasghjdabcdsdjgsahgdj'));// true
    console.log(reg.test('sadadfbasdadcasdasdd'));  // false
    结果也是和字面量方式创建的一样

2 正则表达式的常用方法

2.1 test() 匹配

 => 语法: 正则表达式.test('要检测的字符串')
        => 返回值: 一个布尔值
          -> 如果该字符串符合正则的规则, 那么就是 true
          -> 如果该字符串不符合正则的规则, 那么就是 false


	意义: 字符串中必须包含 abcd 字符串片段
    var reg = /abcd/
    var res = reg.test('1324abcd2345tgfsadygfduih')
    console.log(res)  //  true

2.2. exec() 捕获

先不做具体了解

3 正则表达式的组成部分

3.1. 元字符

      所有的文本内容
      特殊符号, 用符号表示一类内容

3. 2 标识符

      书写在正则的外面, 用来修饰正则表达式的

4 元字符 — 基本元字符

		1. \d   表示 一位 数字
    	// 意义: 字符串中至少包含一位 数字(0-9)
   		var reg = /\d/
    	var res = reg.test('wertyuio8kjhbvcoxsdf*&^%$#@#$%^&*(')
    	console.log(res)  // true

		2. \D   表示 一位 非数字
    		// 意义: 字符串中至少包含一位 非数字 内容
    		var reg = /\D/
    		var res = reg.test('12345(67890')
    		console.log(res)  // true

		3. \s   表示 一位 空白内容(空格/缩进/制表符/...)
			var reg = /\s/
    		var res = reg.test('cdrtyu1 ij3456789&^%$#@$%^&')
    		console.log(res)  // true

		4. \S   表示 一位 非空白内容
			var reg = /\S/
    		var res = reg.test('          1         ')
    		console.log(res) // true

		5. \w   表示 一位 数字(0-9)字母(a-zA-Z)下划线(_) 中的任意一个
			var reg = /\w/
    		var res = reg.test('!@#$_%^&*(')
   			console.log(res)  // true

		6. \W   表示 一位 非数字字母下划线 中的任意一个
			var reg = /\W/
   			var res = reg.test('1234567890%asdfghjkl_______')
    		console.log(res)  // true

		7. .    表示 一位 非换行以外的任意内容
			var reg = /./
    		// 在字符串内 \n 表示换行的意思
    		var res = reg.test(' \n')
    		console.log(res)  // true

		8. \    表示 转义符
          -> 把有意义的符号转换成没有意义的普通文本
          -> 把没有意义的文本转换成有意义的符号
           var reg = /\d\.\d/
     	   var res = reg.test('1.5')
    	   console.log(res)
 	// 小问题
    // 我需要检测一个 小数
     var reg = /\d.\d/
     var res = reg.test('1.5')
     console.log(res)  // ture

5元字符 — 边界符号

		1. ^   表示 字符串 开始
    	// 表示字符串中至少包含一位数字
    	var reg1 = /\d/
    	// 表示字符串中必须以一个数字开头
    	var reg2 = /^\d/
    	console.log(reg1, 'ab1cd', reg1.test('ab1cd')) // /\d/ 'ab1cd' true
    	console.log(reg2, '1abcd', reg2.test('1abcd'))  // /^\d/ '1abcd' true

		2. $   表示 字符串 结尾
		// 表示字符串中至少包含一位数字
    	var reg1 = /\d/
    	// 表示字符串中必须以一个数字结尾
    	var reg2 = /\d$/
    	console.log(reg1, 'ab1cd', reg1.test('ab1cd'))  //  /\d/ 'ab1cd' true
    	console.log(reg2, 'abcd1', reg2.test('abcd1'))  //  /\d$/ 'abcd1' true

		注意:^ 和 $ 一起使用的时候, 表示的是从开头到结尾
	// 问题:
    // 规则: 字符串开头 一位数字 字符串结尾
    var reg = /^\d$/
    console.log(reg.test('1'))  // true
    console.log(reg.test('1a2'))  //  false
    console.log(reg.test('12'))  //  false

6 元字符 — 限定符

	注意: 一个限定符只能修饰符号前面的一个内容的出现次数
	
      1. *     表示出现 0 ~ 多次
		var reg = /^\d*$/
    	console.log(reg.test(''))  //  true
    	console.log(reg.test('1'))  //  true
    	console.log(reg.test('12'))  //  true
    	console.log(reg.test('123'))  //  true
    	console.log(reg.test('1234'))  //  true
   		console.log(reg.test('12345'))  //  true

      2. +     表示出现 1 ~ 多次
		var reg = /^\d+$/
    	console.log(reg.test(''))  //  false
    	console.log(reg.test('1'))  //  true
    	console.log(reg.test('12'))  //  true
    	console.log(reg.test('123'))  //  true
    	console.log(reg.test('1234'))  //  true
   		console.log(reg.test('12345'))  //  true

      3. ?     表示出现 0 ~ 1var reg = /^\d?$/
		console.log(reg.test(''))  //  true
    	console.log(reg.test('1'))  //  true
    	console.log(reg.test('12'))  //  false
    	console.log(reg.test('123'))  //  false
    	console.log(reg.test('1234'))  //  false
   		console.log(reg.test('12345'))  //  false

      4. {n}   表示出现 指定 多少次
	    var reg = /^\d{2}$/
		console.log(reg.test(''))  //  false
    	console.log(reg.test('1'))  //  false
    	console.log(reg.test('12'))  //  true
    	console.log(reg.test('123'))  //  false
    	console.log(reg.test('1234'))  //  false
   		console.log(reg.test('12345'))  //  false

      5. {n,}  表示出现 至少 多少次
        => {0,} 等价于 *
        => {1,} 等价于 +
	    var reg = /^\d{2,}$/
		console.log(reg.test(''))  //  false
    	console.log(reg.test('1'))  //  false
    	console.log(reg.test('12'))  //  true
    	console.log(reg.test('123'))  //  true
    	console.log(reg.test('1234'))  //  true
   		console.log(reg.test('12345'))  //  true


      6. {n,m} 表示出现 n ~ m 次
        => {0,1} 等价于 ?
	    var reg = /^\d{2,5}$/
		console.log(reg.test(''))  //  false
    	console.log(reg.test('1'))  //  false
    	console.log(reg.test('12'))  //  true
    	console.log(reg.test('123'))  //  true
    	console.log(reg.test('1234'))  //  true
   		console.log(reg.test('12345'))  //  true
   		console.log(reg.test('123456'))  //  false
	// 问题:
    var reg = /^a{2}b{2}c{2}$/
    console.log(reg.test('aabbcc'))  //  true
    console.log(reg.test('abcc'))  // false
    console.log(reg.test('abcabc'))  // false

7元字符 — 特殊符号

	1. ()
        => 意义1: 一个整体
        
	    var reg = /^(abc){2}$/
    	console.log(reg.test('abcabc')) // true

    2. |
        => 意义: 或者的意思
        => 注意: 或的边界, 要么是 (), 要么就到正则的边界
		
		 var reg = /^a(b|c)d$/
    	console.log(reg.test('abd'))  // true
    	console.log(reg.test('acd'))  // true
    	console.log(reg.test('abcd'))  //false


		 var reg = /^ab|cd$/
    	console.log(reg.test('abcd'))  // true
    	console.log(reg.test('ababc'))  // true
    	console.log(reg.test('1234cd'))  // true
    	console.log(reg.test('ab'))  // true
    	console.log(reg.test('cd'))  // true


    3. []
        => 意义: 包含
        => 注意: 一个 [] 内可以写多个内容, 但是一个 [] 只占一个字符位置, 表示 [] 内的任意一个都行
        => [0-9] 等价于 \d
        => [0-9a-zA-Z_] 等价于 \w

		// 表示字符串从开头到结尾只能有一位字符
    	// 这一位字符可以是 a 可以是 b 可以是 c 可以是 d
    	// [abcd] 等价于 (a|b|c|d)
    	var reg = /^[abcd]$/
    	console.log(reg.test('a'))  // true
    	console.log(reg.test('b'))  // true
    	console.log(reg.test('c'))  // true
    	console.log(reg.test('d'))  // true
    	
    4. [^]
        => 意义:=> 注意: 一个 [^] 内可以写多个内容, 但是一个 [^] 只占一个字符位置, 表示 [^] 内的任意一个都不行
        => [^0-9] 等价于 \D
        => [^0-9a-zA-Z_] 等价于 \W

		// 表示字符串从开头到结尾只能有一位字符
    	// 这一位字符不能是 a 不能是 b 不能是 c 不能是 d, 其他的都可以
    	var reg = /^[^abcd]$/
    	console.log(reg.test('a'))  // false
    	console.log(reg.test('b'))  // false
    	console.log(reg.test('c'))  // false
    	console.log(reg.test('d'))  // false
    	console.log(reg.test(' '))  // true
    	console.log(reg.test('1'))  // true


    5. - 中划线
        => 意义: 到 至
        => 注意: 需要和 [] 或者 [^] 连用
        => 注意: 需要 ASCII 编码连着的才可以使用

	// [0-9] 等价于 [0123456789]
    // 表示字符串只能有一位字符
    // 这一位字符可以是 0 - 9 的任意一个
    var reg = /^[0-9]$/
    console.log(reg.test('0'))  // true
    console.log(reg.test('1'))  // true
    console.log(reg.test('2'))  // true
    console.log(reg.test('3'))  // true
    console.log(reg.test('4'))  // true
    console.log(reg.test('5'))  // true
    console.log(reg.test('6'))  // true
    console.log(reg.test('7'))  // true
    console.log(reg.test('8'))  // true
    console.log(reg.test('9'))  // true
    // 问题:
    // 正则: 汽车{2}
    // 汽车: 可以是 奥迪 也可以是 宝马
    // {2} 修饰的是一个 (), 需要 **一个整体内容** 出现两次
    // **一个整体内容**: 可以是 'abc' 也可以是 'def'
    var reg = /^(abc|def){2}$/
    console.log(reg.test('abcabc'))  //  true
    console.log(reg.test('abcdef'))  //  true
    console.log(reg.test('defabc'))  //  true
    console.log(reg.test('defdef'))  //  true

8 标识符

	标识符
        + 书写在正则表达式的外面, 专门用来修饰整个正则表达式的符号

      1. i (ignore)
        => 表示忽略大小写不计
	// 标识符 i 修饰正则表达式, 表示该正则在验证字符串的时候忽略大小写不计
    var reg = /abcd/i
    console.log(reg.test('abcd'))  //true
    console.log(reg.test('ABCD'))	 //true	

      2. g (global)
        => 全局 先不做了解 ()
  • 10
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值