正则表达式
1.基本符号
/* 构造函数方式 */
let reg = new RegExp([/[a-z]/]);
/* 正则的方法test() 可以判断你输入的字符串是否复合要求
复合就返回true 不符合就返回false */
/* console.log(reg); */
/* let reg = /[a-z]/;
console.log(reg.test('C')); 返回值false */
/* 用字面量的方式来表示正则 */
/* let reg = /[a-z]/ */
/* let obj = new Object({a:1}); */
let str = 'abc1a2c3b';
console.log( str.match(/a/g) );
//i表示大小写不敏感
let reg = /[a-z]/i;
console.log(reg.test('A'));//true
2.简单匹配符号及解释
<script>
// 表示大写的A-Z
// /[a-zA-Z]/表示大小写都匹配
// /[0-9]/ 找查任何从0到9的数字
// /[0-9a-zA-Z]/ 表示0-9和26个大小写字母都匹配
// []表示只要有一个符合都返回true
// [^]写在里面叫除了 ^[]写在外面叫做以什么开头
// []$ 表示以什么结尾
// + 表示匹配前面的字符串匹配一次或者多次
// ^[a-z]+$ 表示纯26个英文小写的字母
/* let reg;
reg = /[abc]$/;
console.log(reg.test('a1')); */
/* 匹配一串字符 包括多个英文字母 包括大小写和数字 */
/* let reg = /^[a-z0-9]+$/i;
console.log(reg.test('A')); */
/* 用户名 字母长度不能小于6位 不能大于10位 可以接受数字 */
/* let reg = /^[a-zA-Z0-9]{6,10}$/ ; */
// * 表示匹配前面的子表达式零次或多次/[a-z]/* 字母出现与否都为true
/* ? 表示匹配前面的子表达式零次或一次 /[a-z]/? 字母出现0或1次都为true */
/* 要加限定字符不然 一直都是true */
/* {n,} 表示至少匹配n次 /^[a-z]{6,10}$/ */
</script> -->
3.\w和\W
<!-- \w 匹配数字、字母、下划线 这些元字符注意区分大小写-->
<!-- \W 匹配非数字、字母、下划线 这些元字符注意区分大小写-->
<script>
let reg = /^[\w]+$/;
console.log(reg.test('_asdasd'));
</script>
4.\d和\D
<!-- \d 匹配数字 -->
<!-- \D 匹配非数字 -->
<!-- <script>
let reg = /^[\D]+$/;
console.log(reg.test('_asdasd'));
</script> -->
5.\s和\S
<!-- \s 匹配空白字符(空格、换行\n、回车\r) -->
<!-- \S 匹配非空白字符(空格、换行\n、回车\r) -->
<!-- <script>
let reg = /^[\s]+$/;
console.log(reg.test('_asdasd'));//true
</script> -->
6.\n匹配换行符
String支持正则的属性
test表示:符合返回true 不符合返回false 用法:
let reg = /[a-z]/;
console.log(reg.test('C'))
exec表示:符合返回一个数组,不符合返回null 用法:
let reg = /^[a-z]+$/g
console.log(reg.exec('abc'));
search表示:返回匹配到的第一个字符串下标,否则返回-1 用法:
let str = 'abc';
console.log(str.search(/[a-z]/));
match表示:如果没有找到任何匹配的文本,返回null,否则它返回一个数组(依赖于是否具有全局标志g) 用法:
let str = 'abc123qwe';
console.log(str.match(/[0-9]/g)); //123
replace表示:返回一个新的字符串 用法:
let str = 'abc123qwe';
let newStr = str.repeat(/[0-9]/g,'oo');
console.log(newStr);
split表示:用正则表达一个分隔符,第二个参数表示分割成几个数组的意思 用法:
<script>
let str = 'a1b2c3d';
console.log(str.split(/[0-9]/));//(4) ['a', 'b', 'c', 'd']
</script>
练习
- 验证26个字母 组成的字符串
- 验证由数字和26个字母组成的字符串
- 验证由数字、字母、下划线组成的字符串
- 验证由汉字\u4e00-\u9fa5 以数组的形式打印在控制台
答案:
<script>
let a = 'asdasdasf'
console.log(a.match(/[a-z]/g));
let b = 'asd121d3as';
console.log(b.match(/[0-9a-z]/g));
let c= '123asd__';
console.log(c.match(/[\w]/g));
let d = '我超神了';
console.log(d.match(/^[\u4e00-\u9fa5]+$/g));
</script>