目录
- 一、基本元字符
- 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")); //falseconsole.log(reg.test("123")); //true
\d\d
//至少包含两位数字var reg = /\d\d/;console.log(reg.test("abc")); //falseconsole.log(reg.test("1")); //false
2.\D
//至少包含一位非数字var reg1 = /\D/;console.log(reg1.test("abc")); //trueconsole.log(reg1.test("123")); //false
3.\s
//至少有一位空白(空格 缩进 换行(\n))var reg3 = /\s/;console.log(reg3.test("12 ")); //trueconsole.log(reg3.test("12\n3")); //true,\n是换行
4.\S
//至少包含一位非空白(空格 缩进 换行)var reg4 = /\S/;console.log(reg4.test(" 1")); //trueconsole.log(reg4.test("\n\n\n")); //false,因为换行全是空白
5.\w
//包含字母、数字、下划线var reg5 = /\w/;console.log(reg5.test("12asasa_")); //trueconsole.log(reg5.test("_")); //trueconsole.log(reg5.test("12")); //trueconsole.log(reg5.test("$")); //false
\w\w
//至少包含两位字母、数字、下划线var reg5 = /\w\w/;console.log(reg5.test("12asasa_")); //trueconsole.log(reg5.test("_")); //falseconsole.log(reg5.test("12")); //trueconsole.log(reg5.test("$")); //false
6.\W
//至少包含一位非字母、数字、下划线var reg6 = /\W/;console.log(reg6.test("12asasa_")); //falseconsole.log(reg6.test("_")); //falseconsole.log(reg6.test("12")); //falseconsole.log(reg6.test("$")); //true
7..
//任意内容(不算换行)var reg7 = /./;console.log(reg7.test("%$!@")); //trueconsole.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")); //trueconsole.log(reg8.test("2#34")); //trueconsole.log(reg9.test("2.34")); //trueconsole.log(reg9.test("2a34")); //false,中间必须有. ,而不是任意字符
二、边界符
1.^
//限制开头var reg = /^\d/; //必须以数字开头console.log(reg.test("3a1")); //trueconsole.log(reg.test("ah3")); //false
2.$
//限制结尾var reg1 = /\d$/; //必须以数字结尾console.log(reg1.test("3a1")); //trueconsole.log(reg1.test("ah")); //false
3.用 ^
和 $
限制开头和结尾
var reg2 = /^abc$/; //必须以abc开头,以abc结尾console.log(reg2.test("abc")); //trueconsole.log(reg2.test("ahbc")); //falseconsole.log(reg2.test("abch")); //false
三、限定符
1.*
//代表0~n次var reg = /\d*/; //0个数字可以,1个或多个数字也可以console.log(reg.test("abc")); //trueconsole.log(reg.test("sd12j3")); //true
2.+
//代表1~n次var reg1 = /\d+/; //包含1个或多个数字console.log(reg1.test("abc")); //falseconsole.log(reg1.test("s21dj3")); //true
3.?
//代表0~1次var reg2 = /\d?/; //console.log(reg2.test("abc")); //trueconsole.log(reg2.test("1ab")); //true
4.{n}
//指定次数var reg3 = /\d{3}/; //出现三次数字,三个数字连续console.log(reg3.test("abc")); //falseconsole.log(reg3.test("1a2b3")); //falseconsole.log(reg3.test("123ab")); //true
5.{n,}
// 代表>= n次var reg4 = /\d{3,}/; //大于等于三个数字,三个数字连续console.log(reg4.test("abc12")); //falseconsole.log(reg4.test("a12bc12")); //false,有四个数字但是不连续console.log(reg4.test("a123b")); //trueconsole.log(reg4.test("ab123456")); //true
6.{n,m}
//代表n~m次var reg5 = /\d{3,5}/; //3~5个数字console.log(reg5.test("abc12")); //falseconsole.log(reg5.test("a123b")); //trueconsole.log(reg5.test("ab123456")); //true,虽然超过5了但是也是true,但是exec()函数只能捕获5个数字
四、特殊符号
1.()
//代表整体var reg = /(abc){3}/; //包含三组abc,并且连续console.log(reg.test("abcabcabc")); //trueconsole.log(reg.test("abc213abcabc")); //false
2.|
//代表或var reg1 = /a|b/; //包含a或bconsole.log(reg1.test("a213")); //trueconsole.log(reg1.test("123b")); //true
3.[]
var reg2 = /[abcdef]/;//在[]中存在一个以上就对console.log(reg2.test("xyz")); //falseconsole.log(reg2.test("xyz123c")); //true,存在一个cvar reg3 = /[abcdef]{3,5}/; //[]中的字母要出现3~5次才对console.log(reg3.test("ab")); //falseconsole.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