1. 作用
正则表达式的作用就是匹配一个字符串
打比方,假如你要判断一个 str 是不是等于 "abc", 可以通过 str == "abc" ? true : false 来判断,匹配返回 true,不匹配返回 false,那如果,要判断是否等于"abc"其中 "abc" 无论哪一个字母是大写都判断为匹配,返回 true,那要怎么处理,不可能写成,str == "abc" || str == "Abc" || str == "aBc" || ... 这样,就很繁琐了,这就需要用到正则表达式,"abc"大小写都匹配通过正则表达式判断为:/^(a|A)(b|B)(c|C)$/, 通过正则的test()方法,就可以满足需求了 /^(a|A)(b|B)(c|C)$/.test(str)
2. 定义
// ^: 以什么开始 $: 以什么结束 /^$/;
3. 方法
// demo let reg = /^y[a-zA-Z0-9_]*coder$/; let str = "yqcoder"; // 正则的方法 // 满足匹配返回true,否则false reg.test(str); // true // 返回匹配正则的值,否则返回null reg.exec(str); // ['yqcoder', index: 0, input: 'yqcoder', groups: undefined] // 字符串匹配正则方法 // 替换满足正则的字符串 str.replace(reg, "super"); // 'super' // 返回匹配的值 str.match(reg); // ['yqcoder', index: 0, input: 'yqcoder', groups: undefined]
4. 正则字符
[0-9] or \d: 单个数字
\D : 非数字
\W : 非 0-9a-zA-Z
\S : 非空白字符
. : 非换行符\n 的所有字符
[a-zA-Z0-9_] 或 \w: 包括下划线在内的字母数字
\s: 空白字符(空格 ,制表符\t,换页符\f,换行符\n,回车符\r)
5. 次数
+ : 至少1次
? : 可有可无
* : 0-无穷次
{x} : 指定x次
{min, } : 至少min次
{0, max} : 最多max次
{min, max} : min到max次
6. 需要转义的特殊字符
* . ? + ^ $ | \ / [ ] ( ) { }
7. 操作符
\t 制表符 ('\u0009')
\n 换行符 ('\u000A')
\r 回车符 ('\u000D')
\f 换页符 ('\u000C')
\a 响铃符 ('\u0007')
\e 转义符 ('\u001B')
8. 常用正则
// 正整数:人数,排名 /^\d+$/; // 正浮点数:金额 /^\d+(\.\d+)?$/; // 汉字 /^[\u4e00-\u9fa5]{0,}$/; // 英文和数字 /^[A-Za-z0-9]+$/; // 邮箱 /^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/; // 手机 /^(13[0-9]|14[5|7]|15[0|1|2|3|5|6|7|8|9]|18[0|1|2|3|5|6|7|8|9])\d{8}$/; // 网址 /[a-zA-z]+://[^\s]*/ // 电话号码 /^(\(\d{3,4}-)|\d{3.4}-)?\d{7,8}$/; // 身份证号(15位、18位数字) /^\d{15}|\d{18}$/; // 密码(以字母开头,长度在6~18之间,只能包含字母、数字和下划线) /^[a-zA-Z]\w{5,17}$/;