//该对象的参数是一个匹配字符串,说明一种规则。
//let regObj = new RegExp(/xyz/);--写法1
let regObj = /abc/;--写法2(常用) //正则表达式对象,我们经常使用字面量的方式去构建,方便好用,这是一种语法糖(syntax sugar)
// 正则表达式的基本使用
console.log(regObj.test("abc"));//控制台显示 true
console.log(regObj.test("xyz"));//控制台显示false
//let car = {} //字面量方式来构建一个对象
//以abc开头--在开头加 ^
let regObj = /^abc/;
console.log(regObj.test("abc"));
console.log(regObj.test("xyzabc"));
//以abc结尾--在末尾加 $
let regObj2 = /abc$/;
console.log(regObj2.test("abcxyz"));
console.log(regObj2.test("xyzabc"));
//精准匹配,只有abc才行--在开头加 ^,在末尾加 $
let regObj3 = /^abc$/;
console.log(regObj3.test("abcxyzabc"));
console.log(regObj3.test("xyzabc"));
console.log(regObj3.test("abc"));
3.正则表达式对象的字符管理
1)字符的范围管理( - 范围符)
//[]只管一个字符,其内部的内容是一个字符的集合,匹配其中任意一个字符即可通过
//a或b或c开头都可以
let regObj_1 = /^[abc]/;
console.log(regObj.test('andy'));
console.log(regObj.test('david'));
console.log(regObj.test('boy'));
//要以a或b或c开头+固定oy结尾
let regObj_2 = /^[abc]oy/;
console.log(regObj.test('andy'));
console.log(regObj.test('david'));
console.log(regObj.test('boy'));
// - 范围符号
//只要是a到z开头就行
let regObj_3 = /^[a-z]/;
console.log(regObj.test('andy'));
console.log(regObj.test('Andy'));
//只要是a到z开头或A到Z开头就行
let regObj_4 = /^[a-zA-Z]/;
console.log(regObj.test('andy'));
console.log(regObj.test('Andy'));
//只要是a到z开头或A到Z开头就行,也可以有数字范围,也可以加符号(例如+、*)
let regObj_5 = /^[a-zA-Z6-9+*]/;
console.log(regObj.test('andy'));
console.log(regObj.test('Andy'));
console.log(regObj.test('723'));
console.log(regObj.test('+123'));
2)模式匹配频率设置(量词符)
//第一个字符是数字,第二个字符是字母
let regObj = /^[0-9][a-z]/;
console.log(regObj.test('1andy'));
console.log(regObj.test('12andy'));
//量词符分类(粗略)
//第一种:* : 0-n次
let regObj3 = /^[0-9]*/;
console.log(regObj3.test('51234537437434394'));
console.log(regObj3.test(''));
//第二种:+ : 1-n次
let regObj4 = /^[0-9]+/;
console.log(regObj3.test('51234537437434394'));
console.log(regObj3.test(''));
//第三种:?: 0次或者1次
let regObj5 = /^[0-9]?/;
console.log(regObj3.test('a1234537437434394'));
console.log(regObj3.test(''));
//量词符分类(精细)
//第一种:{n} : n次
let regObj6 = /^[0-9]{3}/;
console.log(regObj3.test('33a'));
console.log(regObj3.test('331'));
//第二种 1:{n,m} : 至少n到m次
let regObj7 = /^[0-9]{3,6}/;
console.log(regObj3.test('33a'));
console.log(regObj3.test('3312qa'));
//第二种 2:{n,m} : 只有n到m次
let regObj8 = /^[0-9]{3,6}$/;
console.log(regObj3.test('33123'));
console.log(regObj3.test('331123433'));
//第二种 3:{n,} : 大于等于n次
let regObj7 = /^[0-9]{3,}/;
console.log(regObj3.test('33a'));
console.log(regObj3.test('3312qa'));
//以非0-9数字开头--^[^]:取反
let regObj9 = /^[^0-9]/;
console.log(regObj.test('andy'));
//d代表数字,D代表非数字(元字符)
//以0-9数字开头--^[d]=^[^0-9] d:digital
let regObj10 = /^[d]/;
console.log(regObj.test('andy'));
//以非数字开头
let regObj = /^[D]/;
console.log(regObj.test('andy'));