对每个人而言,真正的职责只有一个:找到自我。然后在心中坚守其一生,全心全意,永不停息。所有其他的路都是不完整的,是人的逃避方式,是对大众理想的懦弱回归,是随波逐流,是对内心的恐惧。
正则表达式
RegExp对象
1 2 3 4
| var reg = /\bis\b/g; var reg = new RegExp('\\bis\\b','g');
|
修饰符
- g: globle 全文搜索
- i: ignore case 忽略大小写
- m: multiple lines 多行搜索
正则表达式由两种基本字符类型组成
- 原义字符
- 元字符:在正则表达式中有特殊含义的非字母字符
字符类
- 元字符的应用(构建类)
[abc] :one of abc
- 取反
[^abc] :none of abc
范围类
- [a-z] [A-Z] [0-9]
- [a-zA-Z]
- [0-9-] 匹配0-9或者-
预定义类
量词
贪婪模式
1
| '12345678'.replace(/\d{3,6}/g,'X')
|
非贪婪模式
1
| '12345678'.replace(/\d{3,6}?/g,'X')
|
分组
或
1
| 'ByronsperByrCasper'.replace(/Byr(on|Ca)sper/g,'X')
|
反向引用
1
| '2016-12-20'.replace(/(\d{4})-(\d{2})-(\d{2})/g,'$2$3$1')
|
忽略分组
前瞻
1
| 'a2*3'.replace(/\w(?=\d)/g,'X')
|
RegExp属性(只读)
1 2 3 4 5 6
| var reg = /\w/; reg.goloble; reg.ignoreCase; reg.multiline; reg.sourse; reg.lastIndex
|
RegExp方法
1 2 3 4
| var reg = /\w/; reg.test('s'); reg.exec('s'); reg.lastIndex
|
exec非全局调用
- 返回数组
- 第一个元素是与正则表达式相匹配的文本
- 第二个元素是与RegExpObject的第一个子表达式相匹配的文本(如果有的话),以此类推
1 2 3 4 5 6
| var reg = /\d(\w)\d/; var ts = '1a2b3c4d5e'; var ret = reg.exec(ts); console.log(reg.lastIndex + '\t' + ret.index + '\t' + ret.toString());
|
exec全局调用
1 2 3 4 5 6 7
| var reg = /\d(\w)\d/g; var ts = '1a2b3c4d5e'; var ret = reg.exec(ts); while(ret = reg.exec(ts)){ console.log(reg.lastIndex + '\t' + ret.index + '\t' + ret.toString()); }
|
字符串对象方法
String.prototype.search(reg)
1 2
| 'asddfasdfa'.search('s')
|
String.prototype.match(reg)
1 2 3 4 5 6 7 8
| 'a21s1d1a1d1'.match(/\d(\w)\d/g) var reg = /\d(\w)\d/; var ts = '$1a2b3c4d5e'; var ret = ts.match(reg); console.log(ret); console.log(ret.index + '\t' + reg.lastIndex);
|
String.prototype.split(reg)
1 2 3 4
| '1,a,2,b,3,c'.split(',') '1a2b3c4d5e'.split(/\d/g);
|
String.prototype.replace(str,str)
- String.prototype.replace(reg,str)
- String.prototype.replace(reg,function)
1.匹配字符串
2.正则表达式分组内容,没有分组则没有该参数
3.匹配项在字符串中的index
4.原字符串1 2 3 4
| '1a2b3c4d5e'.replace(/\d/g,function(match,index,origin){ console.log(index); return parseInt(match) + 1; });
|
1 2 3 4
| '1a2b3c4d5e'.replace(/(\d)(\w)(\d)/g,function(match,group1,group2,group3,index,origin){ console.log(match); return group1 + group3; });
|