正则
正则验证
var str = 'hello';
var reg = /ll/;
reg.test(str)//true
- 正则原型上有一个test方法,可以让所得正则实例调用,返回一个Boolean值
###量词元素符
|符号|意义|
|--|--|
|*|表示0到多次|
|+|表示1到多次|
|?|表示0或者1次|
|{n}|表示出现n次|
|{n,}|表示出现n到多次|
|{n,m}|表示出现n到m次|
特殊元字符
| 符号 |
意义 |
| \d |
匹配一个数字字符 |
| \D |
匹配非数字 |
| \w |
匹配A-Z,a-z,0-9 |
| \W |
匹配非单词字符 |
| \s |
匹配任意空字符 |
| \b |
匹配边界字符 |
| x|y |
匹配x或y |
| [zyx] |
表示xyz任意一个 |
| [^zyx] |
匹配不是zxy任何一个 |
| [a-z] |
匹配a-z的任意一个 |
| [^a-z] |
匹配非a-z |
| ^ |
代表以什么开头 |
| $ |
代表以什么结束 |
| . |
代表任何字符(除了\n) |
| |表示转意 |
|
| \n |
换行符 |
| ?: |
只匹配不捕获 |
- 分组:
var reg = /1(8|1)9/
- 功能:
- 1.提高优先级明确规则
- 2.分组引用
-
- []里面大部分本来有意义的符号变成普通的字符
修饰符
| 符号 |
意义 |
| g |
全局匹配 |
| i |
忽略大小写 |
| m |
行首行尾 |
- 每一个正则都有一个global,若加g则这个值为true,否则为false
正则捕获
exec 参数:
- 1.result是一个数组
- 2.数组的第一项:是正则捕获到的字符
- 3.数组的第二项:是第一个小括号里面正则匹配到的字符(若多个小括号以此类推)
- 4.index属性:表示正则开始匹配的位置在原字符串的索引
- 5.input属性:表示需要匹配的字符串
reg.lastIndex
- 1.每一个正则都有一个lastIndex 默认值为0
- 2.lastIndex就是正则下一次匹配验证在的位置的索引
每次reg.test后,通过RegExp.$n可以捕获到第n个分组的内容
var reg = /(\d)(\d)/g;
var str = '123';
reg.test(str);
console.log(RegExp.$1);//1
console.log(RegExp.$2);//2
match
- 字符串的方法
match传入一个正则
- 如果正则带g,以数组形式返回匹配到的结果
var reg2 = /(\d{2})-(\d{2})/g;
var str2 = 'a11-22b22-33';
console.log(str2.match(reg2));//["11-22", "22-33"]
- 如果传入match的正则没有带g,那么返回效果和reg.exec是一样的
var reg2 = /(\d{2})-(\d{2})/;
var str2 = 'a11-22b22-33';
console.log(str2.match(reg2));//["11-22", "11", "22", index: 1, input: "a11-22b22-33", groups: undefined]
- 返回一个数组,第一项是正则匹配到的字符,第二项是第一个分组捕获到的字符(以此类推)和exec属性相同
replace
- 1.第一项是正则匹配的内容
- 2.第二项到倒数第三项是分组的内容(分组依次类推)
- 3.倒数第二项是本次匹配成功的内容的开始索引
- 4.倒数第一项是需要匹配的字符串
- 5.字符串的内容能被正则匹配到几次,后面的内容执行(callback)几次就会执行几次
var str4 = 'a11-22b22-33c'
var str5 = str4.replace(/(\d{2})-(\d{2})/g,function () {
console.log(arguments);
});
var str4 = 'a11-22b22-33c'
var str6 = str4.replace(/(\d{2})-(\d{2})/g,function () {
return 'T';
})
console.log(str6);//aTbTc
//思考题
//格式化时间->时间按照指定的格式拼接成新的字符串
var str = "2017-08-10 15:30:45";
var tempStr = "{0}年{1}月{2}日 {3}时{4}分{5}秒";
//->2017年08月10日 15时30分45秒
var reg1 = /\d+/g;
var res1 = str.match(reg1);
var reg2 = /\{(\w)\}/g;
var res2 = tempStr.replace(reg2,function ($1,$2) {
return res1[$2];
})
console.log(res2);