一、常用元字符
+ 匹配出现一次以上
* 匹配出现 0 次以上
? 匹配前面字符出现一次或 0 次。 colou?r 可以匹配 color 或 colour
^ 匹配非后面的字符 [^abcde] 匹配字符串中除了abcde 的所有字符
. 匹配除了换行符 ( \n 、\r)之外的任何单个字符 \n (换行) \r(回车) 回车是回到当前行起始
\s 匹配所有空白字符,包括换行
\S 匹配所有非空白字符,不包括换行
\w 匹配 字母数字下划线 等同于 [a-zA-Z0-9_]
{n} {n,}{n,m} 限制前面修饰个数
.*? +? 惰性匹配 * 和 + 都是贪婪匹配 加上 ? 就变成了非贪婪匹配
二、修饰符
/g 全局匹配所有匹配项
/i 不区分大小写
/m (多行匹配) 将每一行用 ^ $ 包起来单独拿出来匹配
var str="runoobgoogle\ntaobao\nrunoobweibo";
var n1=str.match(/^runoob/g); // 匹配一个
var n2=str.match(/^runoob/gm); // 多行匹配
/s 只是为了让. 包含换行符
三、定位符
^ 匹配输入字符开始位置
$ 匹配字符结束位置
\b 匹配一个单词边界
\B 匹配非单词边界
四、常用语法
1、match 方法、返回匹配的 数组
var str = "abc123de321fg";
var patt1 = /[0-9]+/;
var patt2 = /[0-9]+/g;
str.match(patt1); // [123] 默认匹配第一个
str.match(patt2); // [123,321]
2、test 方法 验证数据
function validMobile(mobile) {
let myreg = /^1(3\d|4[5-9]|5[0-35-9]|6[2567]|7[0-8]|8\d|9[0-35-9])\d{8}$/;
return myreg.test(mobile);
}
五、正则校验数据格式 ***
1、匹配中文字符 [\u4e00-\u9fa5]
2、空白行匹配 \n\s*\r
3、匹配邮箱 /^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/
4、手机号 /^1(3\d|4[5-9]|5[0-35-9]|6[2567]|7[0-8]|8\d|9[0-35-9])\d{8}$/
5、电话号码 /^(\(\d{3,4}-)|\d{3.4}-)?\d{7,8}$/
6、身份证号 (15 或 18位) /^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$/
7、密码(以字母开头,长度在6~18之间,只能包含字母、数字和下划线):
/^[a-zA-Z]\w{5,17}$/
强密码(必须包含大小写字母和数字的组合,不能使用特殊字符,长度在 8-10 之间):
/^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])[a-zA-Z0-9]{8,10}$/
强密码(必须包含大小写字母和数字的组合,可以使用特殊字符,长度在8-10之间):
/^(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{8,10}$/
8、富文本编辑器去除 <img src="....> 提取url 地址替换img 标签
str.replace(/<img src="([^"]*).*?>/g, function($1,$2){return `&%&${$2}&%&`})
.replace(/<\/?.+?>/g,"").replace(/ /g,"")
9、去掉字符串两端的空格
function trim(str) {
return str.replace(/(^\s*)|(\s*$)/g, "");
}