【JavaScript】正则表达式常用元字符使用方法(实例)

目录

  • 一、基本元字符
      • 1.`\d`
      • 2.`\D`
      • 3.`\s`
      • 4.`\S`
      • 5.`\w`
      • 6.`\W`
      • 7.`.`
      • 8.`\`
  • 二、边界符
      • 1.`^`
      • 2.`$`
      • 3.用 `^` 和 `$` 限制开头和结尾
  • 三、限定符
      • 1.`*`
      • 2.`+`
      • 3.`?`
      • 4.`{n}`
      • 5.`{n,}`
      • 6.`{n,m}`
  • 四、特殊符号
      • 1.`()`
      • 2.`|`
      • 3.`[]`
  • 五、exec()函数实例


一、基本元字符

1.\d

		//表示至少包含一位数字(0-9)
		var reg = /\d/;
		console.log(reg.test("abc")); //false
		console.log(reg.test("123")); //true

\d\d

		//至少包含两位数字
        var reg = /\d\d/;
        console.log(reg.test("abc")); //false
        console.log(reg.test("1")); //false

2.\D

		//至少包含一位非数字
        var reg1 = /\D/;
        console.log(reg1.test("abc")); //true
        console.log(reg1.test("123")); //false

3.\s

		//至少有一位空白(空格 缩进 换行(\n))
        var reg3 = /\s/;
        console.log(reg3.test("12 ")); //true
        console.log(reg3.test("12\n3")); //true,\n是换行

4.\S

		//至少包含一位非空白(空格 缩进 换行)
        var reg4 = /\S/;
        console.log(reg4.test("    1")); //true
        console.log(reg4.test("\n\n\n")); //false,因为换行全是空白

5.\w

		//包含字母、数字、下划线
        var reg5 = /\w/;
        console.log(reg5.test("12asasa_")); //true
        console.log(reg5.test("_")); //true
        console.log(reg5.test("12")); //true
        console.log(reg5.test("$")); //false

\w\w

		//至少包含两位字母、数字、下划线
        var reg5 = /\w\w/;
        console.log(reg5.test("12asasa_")); //true
        console.log(reg5.test("_")); //false
        console.log(reg5.test("12")); //true
        console.log(reg5.test("$")); //false

6.\W

		//至少包含一位非字母、数字、下划线
        var reg6 = /\W/;
        console.log(reg6.test("12asasa_")); //false
        console.log(reg6.test("_")); //false
        console.log(reg6.test("12")); //false
        console.log(reg6.test("$")); //true

7..

		//任意内容(不算换行)
        var reg7 = /./;
        console.log(reg7.test("%$!@")); //true
        console.log(reg7.test("_c?\n")); //true,除了换行还有其它内容
        console.log(reg7.test("\n")); //false,但不能只包含换行
        console.log(reg7.test("\n\n\n\n")); //false

8.\

		//转义字符
        var reg8 = /\d.\d/; //其中的.代表任意字符
        var reg9 = /\d\.\d/; //加上转义字符\转义成了普通的点
        console.log(reg8.test("2.34")); //true
        console.log(reg8.test("2#34")); //true
        console.log(reg9.test("2.34")); //true
        console.log(reg9.test("2a34")); //false,中间必须有. ,而不是任意字符


二、边界符

1.^

		//限制开头
        var reg = /^\d/; //必须以数字开头
        console.log(reg.test("3a1")); //true
        console.log(reg.test("ah3")); //false

2.$

		//限制结尾
        var reg1 = /\d$/; //必须以数字结尾
        console.log(reg1.test("3a1")); //true
        console.log(reg1.test("ah")); //false

3.用 ^$ 限制开头和结尾

        var reg2 = /^abc$/; //必须以abc开头,以abc结尾
        console.log(reg2.test("abc")); //true
        console.log(reg2.test("ahbc")); //false
        console.log(reg2.test("abch")); //false

三、限定符

1.*

		//代表0~n次
        var reg = /\d*/; //0个数字可以,1个或多个数字也可以
        console.log(reg.test("abc")); //true
        console.log(reg.test("sd12j3")); //true

2.+

		//代表1~n次
        var reg1 = /\d+/; //包含1个或多个数字
        console.log(reg1.test("abc")); //false
        console.log(reg1.test("s21dj3")); //true

3.

		//代表0~1次
        var reg2 = /\d?/; //
        console.log(reg2.test("abc")); //true
        console.log(reg2.test("1ab")); //true

4.{n}

		//指定次数
        var reg3 = /\d{3}/; //出现三次数字,三个数字连续
        console.log(reg3.test("abc")); //false
        console.log(reg3.test("1a2b3")); //false
        console.log(reg3.test("123ab")); //true

5.{n,}

		// 代表>= n次
        var reg4 = /\d{3,}/; //大于等于三个数字,三个数字连续
        console.log(reg4.test("abc12")); //false
        console.log(reg4.test("a12bc12")); //false,有四个数字但是不连续
        console.log(reg4.test("a123b")); //true
        console.log(reg4.test("ab123456")); //true

6.{n,m}

		//代表n~m次
        var reg5 = /\d{3,5}/; //3~5个数字
        console.log(reg5.test("abc12")); //false
        console.log(reg5.test("a123b")); //true
        console.log(reg5.test("ab123456")); //true,虽然超过5了但是也是true,但是exec()函数只能捕获5个数字


四、特殊符号

1.()

		//代表整体
        var reg = /(abc){3}/; //包含三组abc,并且连续
        console.log(reg.test("abcabcabc")); //true
        console.log(reg.test("abc213abcabc")); //false

2.|

		//代表或
        var reg1 = /a|b/; //包含a或b
        console.log(reg1.test("a213")); //true
        console.log(reg1.test("123b")); //true

3.[]

        var reg2 = /[abcdef]/;//在[]中存在一个以上就对
        console.log(reg2.test("xyz")); //false
        console.log(reg2.test("xyz123c")); //true,存在一个c

        var reg3 = /[abcdef]{3,5}/; //[]中的字母要出现3~5次才对
        console.log(reg3.test("ab")); //false
        console.log(reg3.test("efab")); //true
        
		//`[a-zA-Z0-9_]`包含大小写字母、数字、下划线,也就是基本元字符中的`\w`
        //同时`[0-9]`也就是基本元字符`\d`
        //`[^123]`只要有一个不在123范围内的就是true;^123表示必须以123开头,不带[]

五、exec()函数实例

exec() 方法用于检索字符串中的正则表达式的匹配,返回值是一个数组。

  • 使用方法如下:
		//exec()捕获片段
        var reg = /\d{3}/;//截取三个连续数字
        console.log(reg.exec("as1233km")); //'123'
  • 如何截取datestr中的年月日
 		var datestr = "time is from 2022-11-01 12:00:00 to 2022-12-01 12:00:00 ";
        var reg = /\d{4}-\d{1,2}-\d{1,2}/; //截取出年月日
        var newdatestr = reg.exec(datestr);
        //   console.log(newdatestr); //'2022-11-01'
        console.log(newdatestr[0].split("-").join("/")); //将连接符-换成/,结果是'2022/11/01'

  • 但是上面只能截取到第一个,加上全局标识符g,可以截取到第二个年月日
	  var datestr = "time is from 2022-11-01 12:00:00 to 2022-12-01 12:00:00 ";
      var reg = /\d{4}-\d{1,2}-\d{1,2}/g; //加上全局标识符g,可以截取到第二个年月日
      var newdatestr = reg.exec(datestr);
      console.log(newdatestr); //打印第一个日期:'2022-11-01'

      var newdatestr1 = reg.exec(datestr);
      console.log(newdatestr1); //打印第二个日期:'2022-12-01'


详细正则语法:https://www.baidufe.com/item/eb10deb92f2c05ca32cf.html

你可能感兴趣的:(javascript,正则表达式,前端)