前端让前端飞程序员

Js正则常备不忘

2018-05-15  本文已影响221人  Ricoywang

以前后端同事爬了别人家的网站,需要分析文本,他是想要知道如何通过ClassName定位,后来尽然是让我写个正则匹配表达式。汗,趁记忆力的热乎劲儿写一篇非常规文章。

♨正则表达式是什么

   正则表达式是一个描述字符模式的对象,按照人的语言习惯,当我们读一段文字的时候第一印象,下面有一段文字,我们可以通过多种方式描述它,而每一种方式描述的都是下面一段文字:

###几种使用情况
····处理字符串
··需要从一段字符串中提取想要的部分                     ->match exec
··需要将一段字符串中的一部分替换组成新的字符串           ->replace
··需要将一段字符串处理成想要的数组                     ->split
····判断字符串
··判断字符串是需要的                                 ->test
··判断字符串是需要的,并确定匹配位置                    ->search
###组织正则语言
要匹配的字符串str
正则/a(\d+)[abc]rico(?=wang)/
/   a               (\d+)           [abc]        rico(?=wang)/
 str是否有a
   ↙ ↘
no      yes   → 至少要有一个数字
                     ↙  ↘
                  no     yes  →  返回()匹配的结果 → → 括号内容会被`exec` `match`最后返回
                                        ↓
                                  有a,或者b,或者c
                                     ↙   ↘  
                                   no      yes   → rico后面必须跟上wang
                                                   ↙   ↘  
                                                 no      yes → 只匹配不返回()匹配的结果
var str = 'a1cricowang'
str.match(reg) 返回:["a1crico","1"] //返回的数组第一项是所有匹配结果,第二项为()匹配的结果
var str = 'a121cricowang'
str.match(reg) 返回:["a1crico","121"] //返回的数组第一项是所有匹配结果,第二项为()匹配的结果
reg.test(str) 返回: true
♨ 几种匹配符
♨量词
[] 是定义匹配的字符范围。比如 [a-zA-Z0-9] 表示字符文本要匹配英文字符和数字
()圆括号()是组,主要应用在限制多选结构的范围/分组/捕获文本/环视/特殊模式处理

示例:

^$
♨几种需要转义的:( [ { \ ^ $ | ) ? * + .] }
string方法,接受一个正则对象 string.fn(reg)
RegExp 对象方法,接受一个字符串 reg.fn(string)
matchexec的区别
♨贪婪模式和非贪婪模式
♨零宽正向断言和负向断言,只做判断是否符合()中的规则,并不匹配()中的规则。

文章分两次更新,后期不定期更新修改

上一篇 下一篇

猜你喜欢

热点阅读