发表于: 2017-03-28 22:21:40

3 1280


今天完成的事情:

     今天主要看了下正则表达式相关的语法

     做了自己的简历

明天计划的事情:

     修复产品提的bug,看一下红宝书闭包相关知识

遇到的问题: 

     正则表达式看了很多,自己想通过正则把"aaaabbbbbccccddd"转换成a4b5c4d3,还没做出来,明天再想想

收获: 整理下正则表达式相关知识点,https://regexper.com

什么是正则表达式:Regular  Expression使用单个字符串来描述、匹配一系列符合某个语法规则的字符串。

REGEXP对象:JS通过内置对象 RegExp支持正则表达式,有两种方法实例化对象

1.字面量:var reg=/\bis\b/;          object.replace(reg,'IS')

2.构造函数   var reg=new RegExp('/\bis\b/')

修饰符:g 全文搜索,i ignore case忽略大小写   m:multiple lines多行搜索

正则表达式由两种基本字符类型组成:
1.原义文本字符
2.元字符
.(点)   表示任意字符
\d    数字0-9
\D   非\d,即不是数字0-9的字符
\w   数字0-9,或字母a-z(大小写都可以),或下划线
\W  非\w
\s    空格符,TAB,换页符、换行符
\S    非\s
\t\r\n\v\f   tab回车,换行,垂直制表符,换页符
范围符号:
[]表示字符范围        //[a-z]   [0-9]  [A-Z0-9a-z]
[^...] 字符范围以外  //[^a-z]   [^abc]
^   行首                    //^Hi
$   行尾                    //text$
\b   零宽单词边界    //\bno
\B  非\b                  
特殊符转义:
/\^abc/.text('^abc')   //如果想匹配^符号  使用\符号
分组:
(x)  分组,并记录匹配到的字符串    /(abc)/
\n   表示使用分组符(x)匹配到的字符串    /(abc)\1/.text(‘abcabc’)
(?:x)  仅分组    /(?:abc)(def)\1/.text(abcdefdef)    (?:x)表示仅分组,不会表示在\1里面。    如果没有问号第一组引用在\1上,第二组引用在\2上
重复:
x*  表示重复0次或多次,x+表示重复一次或多次。默认才用贪婪算法,abc*将匹配ab、abc、abcccccccc这种。       abc+将匹配abc、abcccc不匹配ab
x*?   x+?     同x*  x+非贪婪算法,非贪婪算法即匹配尽可能少。abc*?在字符串abcccc将匹配ab(尽可能少c一个都没有)。abc+?则匹配abc
x?   表示出现0次或者一次
x|y  表示x或者y     x|y 匹配x也匹配y   再比如ab/cd/ef  匹配ab或cd或ef
x{n}x{n,}x{n,m}     重复n次,重复>=n次,重复次数满足n<=x<=m.
例如:x{5}:只要是重复五次就可以匹配成功。  x{1,3}匹配x,xx,xxx
前瞻:正则表达式从文本头部向文本尾部解析,文本尾部方向称为前瞻
前瞻就是正则表达式在匹配到规则的时候,向前检查是否符合断言。后瞻方向相反。JS不支持后瞻
符合和不符合特定断言称为肯定/正向匹配和否定/负向匹配
正向前瞻:exp(?=assert)   ‘a2*3’.replace(/\w(?=\d)/g,'X')  X2*3

对象属性:
1.global
2.ignore case
3.multiline
4.lastIndex:当前表达式匹配内容的最后一个字符的下一个位置。

5.source:正则表达式文本字符串

string类型与正则相关的方法:
String.prototype.search           "abcabcdef".search(/(abc)\1/);   //0
search搜索,表示abc出现的索引
String.prototype.replace          “aabbbbcc“.repleace(/b+?/,"1")    //aa1bbbcc
replace替换,前面是要替换的,后面是替换成什么。?表示非贪婪算法,替换尽可能少
String.prototype.match         "aabbbbcc".natch(/b+/);    //["bbbb"]
"aabbbbccbbaa".match(/b+/g)   ["bbbb","bb"]       match匹配需要过滤的东西
String.prototype.split     "aabbbbccbbaa".split(/b+/);    ["aa","cc","aa"]


返回列表 返回列表
评论

    分享到