/*
1、()
//表示abcd出现两次
1-1、一个整体
var reg = /(abcd){2}/;
console.log(reg.test("abcdabcd"));
1-2、单独捕获
==>在捕获一个字符串的时候
==>从左边开始每一个小括号依次是数组里面的[1]开始的内容
==>括号内里面的单独捕获出来[0]捕获的是原数组
==>从左到右依次数小括号的开始括号
const reg = /\d+(\s+)\d+/;
//返回值 [0:'123 123',1:' ']
console.log(reg.exec("123 123"));
const reg1 = /(\d+(\s+))\d+/;
console.log(reg1.exec("123 123"));
//返回值 [0:'123 123',1:'123 ',2:' ']
2、(?:)
==>整体匹配但不捕获
==>指示标志一个整体,但是捕获的时候不会单独捕获出来
const reg = /\d+(?:\s+\d+){2}/;//{2}重复出现次数
console.log(reg.exec("123 123 123")); //[0:123 123 123]
3、|
==>占位或
==>表示左边或者右边的都行
==>大部分时候和()连用,表示一个整体或者一个整体
==>注意:或分开的是左边和右边整个
const reg=/abc|def/
console.log(reg.test('abc'))//true
console.log(reg.test('edf'))//true
console.log(reg.test('abcedf'))//true
console.log(reg.test('aaaedf'))//true
==>与小括号()连用
const reg = /ab(c|d)ef/;
console.log(reg.test("abc")); //false
console.log(reg.test("edf")); //false
console.log(reg.test("abcedf")); //false
console.log(reg.test("aaaedf")); //false
console.log(reg.test("abcef")); //true
console.log(reg.test("abdef")); //true
4、[]
==>注意:**一个[]占一个字符位置**
==>表示里面的任意一个都行
//只要字符串里面有a,b,c,d任意一个字符就返回true
const reg = /[abcd]/;
console.log(reg.test("sssasa")); //true
//整个字符串只能由一个字符组成,可以是a,b,c,d中的任意一个
const 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
console.log(reg.test("e")); //false
5、[^]
==>注意:**一个[^] 占一个字符位置**
==>表示非里面的任意一个都行
//整个字符串只能由一个字符组成,不是a,b,c,d中的任意一个
const 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("e")); //true
6、-
==>表示至或者到
==>是使用在[]里面的一个符号
==>表示从哪一个字符到那一个字符
==>前提是它们在ASCII码是连着的
//表示一为数字组成,可以是0到9 a到z A到Z的任意数字或者字母
const reg = /^[0-9a-zA-Z]$/;
console.log(reg.test("0")); //true
console.log(reg.test("1")); //true
console.log(reg.test("i")); //true
console.log(reg.test("g")); //true
console.log(reg.test("V")); //true
console.log(reg.test("W")); //true
组合形式
1、[0-9a-zA-Z_]等价于\w
2、[^0-9a-zA-Z_]等价于\W
3、[0-9]等价于 \d
4、[^0-9]等价于 \D
5、[ ]等价于\s
5、[^ ]等价于\S
特殊说明
==>当点(.)出现在[]或者[^]里面的时候
==>表示一个点文本
const reg = /^[abc.]$/;
console.log(reg.test("a")); //true
console.log(reg.test("b")); //true
console.log(reg.test("c")); //true
console.log(reg.test(".")); //true
console.log(reg.test("1")); //false
*/
//练习1
/* const reg = /^(abc|def){2}$/;
//()圈起来一个整体,这个整体是abc或者def都行
//{2}表示整体出现两次,只要有两个整体就可以
console.log(reg.test("abcabc")); //true
console.log(reg.test("defdef")); //true
console.log(reg.test("abcdef")); //true
console.log(reg.test("defabc")); //true */
//练习2
//验证一个字符串,只能由数字字母下划线组成,6到12位,不能以_开头
const reg = /^[0-9a-zA-Z]\w{5,11}$/;
console.log(reg.test("abcded")); //true
console.log(reg.test("abcded123456")); //true
console.log(reg.test("abcded1234567")); //false
console.log(reg.test("abcded1234_")); //true
console.log(reg.test("_abcded1234")); //false