正则表达式
一般用在表单验证
作用:
用来匹配字符串是否满足一定的规则。
用法:
1.先创建一个正则对象
js
// 用构造函数实现
let reg = new RegExp("规则");
// 另外一种简单的写法 ---> 以字面量的方式创建对象
let reg = /规则/;2.调用方法,看是否满足条件(规律)
js
// test方法返回一个布尔值
let flag = reg.test("需要判断的字符串");元字符

在匹配以什么开头,什么结尾的时候,中间要加个.
js
let reg = /^1(aa)$/;
console.log(reg.test("12aa")); //返回falsejs
let reg = /^1.(aa)$/;
console.log(reg.test("12aa")); //返回true注意一个.只代表一个字符
js
let reg = /^1.(aa)$/;
console.log(reg.test("122aa")); //返回false数量限定
一般要配合其他规则一起使用
预定义个数
* : 可以出现任意次 (0-n)
+ : 至少出现一次 (1-n)
? : 出现0 次或者1 次 (0-1)
使用* : 匹配以 1 开头,aa 结尾,中间可以有任意的字符
js
let reg = /^1.*(aa)$/;
console.log(reg.test("1 4564hfrthuaa")); //返回true下面这个例子为什么返回 true?
js
let reg = /\d?/;
console.log(reg.test("1234")); // 返回true再次强调一下,正则表达式的作用是用来匹配字符串是否满足一定的规律,并不是要求字符串是什么样子的
可以简单的理解为,有还是没有。上面的例子,被验证的字符串中有出现一次或者零次的数字,所以返回 true。
非贪婪匹配模式
当
?紧跟着其他的限制符时,匹配模式是非贪婪的。非贪婪模式尽可能少的匹配所搜索的字符串
js
let reg = /[0]+?/; // 匹配一次
let reg1 = /[0]+/; // 匹配多次
let s = "10000aa".match(reg);
let s1 = "10000aa".match(reg1);
console.log(s); // ["0", index: 1, input: "10000aa", groups: undefined]
console.log(s1); // // ["0000", index: 1, input: "10000aa", groups: undefined]自定义个数
{n} : 表示匹配出现 n 次
{n,} : 表示匹配至少出现 n 次
{n,m} : 表示匹配出现 n-m 次
js
let reg = /a{1}/
console.log(reg.test('1a56')); //返回true
这里和上面一样,只会关心他有没有出现1次,具体字符串是在怎么样的不管
console.log(reg.test('1aaaaa56'));//返回true通常也要联合其他一起用
js
let reg = /^a\d{2}b$/;
console.log(reg.test("a123b")); //falsejs
let reg = /a{1,}/;
console.log(reg.test("1aaaaa56")); //返回true
console.log(reg.test("156")); //返回falsejs
let reg = /a{1,2}/;
console.log(reg.test("1aa56")); //返回true其他常用元字符

总结
正则表达式,只能用于验证字符串是否满足条件(有还是没有),并不是要求字符串是什么样子的。
\w 和 \W通常用于用户名的验证,注意:\w只要出现 字母、数字、下划线 其中的一种,都会返回 true。
空白字符包括 空格、回车(\r) 或者 换行(\n) 、缩进(\t)。
$ 验证特定的字符串的时候记得加(), let reg = /(aa)$/ 这表示验证以 aa 结尾。
.可以匹配空格,但不能匹配\r \n
匹配不是中文:/[^\u4e00-\u9fa5]/
()用于提升优先级,分组
在正则表达式中对空格是敏感的
