正则的学习
正则的学习
创建正则的方式:
- 采用构造函数:
let reg = new RegExp;
console.log(reg);// /(?:)/
console.log(typeof reg);// object
- 字面量方式创建:
<script>
let reg3 = /test/; //会区分test的大小写
let reg3 = /test/i; //不区分test的大小写(TesT这样也是可以的)
let str = 'testtest_123test456'
console.log(reg2.test(str));//true 用test()方法检测str中是否有test字符串,有则返回true
</script>
正则的一些简单小语法:
let reg = /a|b/;
//表示检验a或b字符
let reg2 = /[ab]/
//和上面是等价的,[]也表示或的意思
let reg3=/\d/; //匹配数字 相当于[0-9]
let test2=reg3.test(str);
console.log(test2);
let reg5=/\D/; //取反,除了数字以外任意字符;
console.log(/\D/.test(t_str));//true
let reg6=/\w/; //匹配只要是数字 字母 下划线,都返回true;
let reg7=/\W/; //匹配非数字 非字母 非下划线;
// 换行符: \r \n 都是换行符
// x? : 匹配只能是一个x或者没有x(0个x或1个x);
/q\d?hello/; //q和hello之间只能是一个数字或啥都没有,如果是两个数字,或者夹杂其他,就是false
-
x+ : 匹配至少1个x(>=1)
-
x* : 匹配至少0个x(>=0)
-
x{n} : 匹配x字符出现n次
-
x{n,} : 匹配x字符出现至少出现n次
-
x{n,m} : 匹配x字符出现出现n到m次 + x{0,m} : 匹配x字符出现出现最多m次
-
/[a-z]/ 检测一个字符串中是否包含任意小写字母
-
/[A-Z]/ 检测一个字符串中是否包含任意大写字母
-
/[A-z]/ 检测一个字符串中是否包含任意字母
-
/[0-9]/ 检测一个字符串中是否包含任意数字
-
/a[bcd]e/ 检测一个字符串中是否包含abe或ace或ade
-
[^] 表示: 除了
var reg = /[^ab]/; // 规则:字符串中,除了a、b之外,还有没有其他的字符内容?var str = "acb";
console.log(reg.test(str)); // 打印结果:true
var reg = /[^0-9]/; // 规则:字符串中,除了数字之外,还有没有其他的内容?
var str1 = "1991";
var str2 = "199a1";
console.log(reg.test(str1)); // 打印结果:false (如果字符串是 纯数字,则返回 false)
console.log(reg.test(str2)); // 打印结果:true
let str2=Hello World zhufeng123456abcdefzhufenzhufeng
;
//需求:匹配至少出现一次zhufeng
console.log(/(zhufeng){1,}/.test(str2));//要给zhufeng添加(),小括号在匹配的时候,提升匹配优先级,将括号内的当作一个整体let reg8=/^zhufeng/;//匹配以z开头,后面紧跟hufeng let reg9=/zhufeng$/;//匹配以g结尾,前面是zhufen let reg10=/^zhufeng$/;//匹配以z开头,g结尾,中间只能是hufen //手机号匹配: let tel=`13678995671`; /^1[35789]\d{9}$/.test(tel);// [35789]意思是可以是35789中的任意一个; //匹配26个英文小写字母: let reg11=/[a-z]/;//匹配所有的26个小写字母; let reg12=/[A-Z]/;//匹配所有的26个大写字母; /* 转义运算符 */ //转义: \ 把那些在正则当中有特殊含义的字符,转义成没有任何含义的普通字符 /\-/; //:把-转义成普通字符串- //注意: 字符串中也存在转义运算符\ let str3="12345\"678\"9"; console.log(str3.length);//11 // 点.代表匹配除了\n \r换行以外的所有字符 // 比如想要匹配到普通'点', 可以这样使用👉 \. let reg11=/[^a-z]/; // ^在中括号中是取非的意思,就是匹配除了26个小写字母以外的所有字符; let reg12=/[a-zA-Z0-9]/;//匹配所有的小写大写字母所有数字中的其中任意一个; let reg13=/[(123)]/; //代表的是 "("或"1"或"2"或"3"或")"; 中括号里除了 - ,其他的都是默认的进行转义(\转义符还是可以使用的); let reg14=/(zhu)|(feng)|(zhufeng)/; //匹配到zhu或feng或zhufeng; //验证年龄段18-65: let reg15 = /(1[8-9])|([2-5]\d)|(6[0-5])/; //因为中括号中只能写单个字符,所以不能写[18-65]; // - 这个横杠只能在中括号中使用; /* 总结: 量词: + * ? {} 用在要修饰的那个字符的后边,代表代表量词前边的那个字符可以出现的次数; (): 在匹配的时候可以提升优先级,把括号内当作是一个整体; ^: 代表以什么开头; $: 代表以什么结尾; */