正则表达式的两种方式
// 字面量 大多数情况下使用
var reg = /abc/;
//构造函数
var reg = new RegExp('asTudy', 'i');
console.log(reg.test("aasastudyy")); //true
- 加了i之后,增则匹配不再区分大小写
- 加了g之后,将执行全局匹配(默认匹配一次后停止)
- 加了m之后,将执行多行匹配(默认只有一行)
标志 | 全称 | 含义 |
---|
g | global | 全文搜索,不添加到话匹配到第一个停止 |
i | ignore case | 忽略大小写,默认大小写敏感 |
m | multip lines | 多行搜索 |
元字符
类型 | 标志 | 示例 | 含义 |
---|
字符类 | [] | [abc] | a或b或c |
反向类 | ^ | [^abc] | 非a,b,c |
范围类 | - | [0-9] | 0-9之间到数字 |
预定义 | . | [^\r\n] | 除回车换行之外的所有字符 |
预定义 | \d | [0-9] | 数字字符 |
预定义 | \D | [^0-9] | 非数字字符 |
预定义 | \s | [\t\n\x0B\f\r] | 空白符 |
预定义 | \S | [^\t\n\x0B\f\r] | 非空白符号 |
预定义类 | \w | [a-zA-Z_0-9] | 单词字符 |
预定义 | \W | [^a-zA-Z_0-9] | 非单词字符 |
边界 | ^ | 以……开头 | |
边界 | $ | 以……结束 | |
边界 | \b | 单词边界 | |
边界 | \B | 非单词边界 | |
量词 | ? | 出现0次或1次(最多一次) | |
量词 | + | 出现一次或者多次(至少一次) | |
量词 | * | 出现0次多少多次(任意次数) | |
量词 | {n} | 出现n次 | |
量词 | {n,m} | 出现n次到m次 | |
量词 | {n,} | 至少出现n次 | |
正则表达式实战用法
var mailReg = /^\w+[-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/;
var phoneReg = /^1\d{10}$/;
var idCardReg = /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/;
var nameReg = /^[\u4e00-\u9fa5]{2,4}$/; // 2-4位的汉字名字
var urlReg = /^(http(s)?:\/\/)?(www\.)?[a-zA-Z0-9][-a-zA-Z0-9]{0,62}(\.[a-zA-Z0-9][-a-zA-Z0-9]{0,62})+(:\d+)*(\/\w+\.\w+)*([\?&]\w+=\w*)*$/; // https或http协议的url
var userNameReg = /^[A-Za-z0-9-_]*$/; // 用户名为数字英文下划线或短划线
var qqReg = /^[1-9][0-9]{4,}$/;
var mailReg = /^[1-9][0-9]{5}$/;
-HTML标签到JS正则表达式
var tagReg = /<[^>]+>/; //可以用来去掉html文本中的标签,得到纯文字
var dateReg = /^\d{4}-(0?[1-9]|1[0-2])-(0?[1-9]|[1-2]\d|3[0-1])$/; //YYYY-MM-dd格式,短线可以视情况替换
var timeReg = /^([0-1]\d|2[0-3]):[0-5]\d:[0-5]\d$/; //HH:mm:ss格式,冒号可以视情况替换