最近在看基础相关的东西,发现之前可以写出来的正则表达式,如今写不出来了,好比千分位格式化输出金额,用正则表达式写不出来,也只能用php提供number_format函数来解决问题。索性把这块的知识复习一下,从头开始了解,我又怕忘得太快,因而乎记在这里php
其实学习正则表达式记住几个知识点,而后就是刷题,好比匹配手机号、身份证号、邮箱等等,经过这些案例来学习正则表达式是最好的方法,记得太多的知识点反而写不出来。废话很少说,先了解下知识点html
下面列出来了一些经常使用的元字符,具体的元字符的用法这里不在列出,了解就能够了,能够结合别人写的正则表达式回头来学习,这样记住的要更深入一些正则表达式
限定符要结合元字符一块儿使用,才能有出奇制胜的功效,具体在文章后买列举出经常使用的案例,看下它们是如何使用的sql
多选机构在一些特定的场合下使用的比较多,好比匹配域名后缀(com|cn|hk|sg)函数
若是要重复一个字符呢,用小括号能够制造这么一个字符串。若是要想使用前面匹配到的结果可使用分组学习
在使用重复的量词(+,*,{m,n})会尽量多的匹配字符,若是咱们不想要贪婪模式,子但愿在匹配成功的前提下使用更少的重复字符,可使用非贪婪模式3d
在匹配一些东西的时候,懒惰模式很是的有用,好比匹配标签img中的src属性值,就使用到了懒惰模式,规则就是这样/<img[\s\S]*?src="([\s\S]+?)"[\s\S]*?>/
code
元字符在匹配的时候,是有优先级的,同级优先级从左至右,其余状况以下面所示,优先级递减regexp
这是正则表达式比较难理解的地方,这里我想记录着,用另一篇文章来说解一下,我要恶补一下知识,才能弄明白orm
在正则表达式中若是要匹配$是比较特殊的,它们两个都是元字符,在使用时必须转义因此匹配$使用的规则为\\\$
在PHP中正则表达式必须放在单双号引号中,不能像JS那样单独出现,而\
在单引号中是转义字符,因此必须把规则中的\
再次转义,获得\\\\\\$
,也就是所匹配$须要使用6个\
和一个$
在双引号中$
有特殊的含义,须要对其转义后才能使用,获得\\\\\\\$
总结一下,正则表达式和引号中的特殊字符都得转义,为了不特殊字符须要转义,强烈建议使用单引号
/^-?\d+$/
/^[1-9]\d*$/
/^\d+\.\d{2}$/
/^1\d{10}$/
/^(?:\d{15}|\d{17}[\dxX])$/
/^[\w\-]+@(?:\w+\.)+\w+$/
/^((25[0-5]|2[0-4]\d|[1-9]\d{0,2})\.){3}(25[0-5]|2[0-4]\d|[1-9]\d{0,2})$/
/^(?:https?:\/\/)?(?:[\w-]+\.)+[a-zA-Z]+$/
/<img[^>]+?src="([^"]+)"/
/<img[^>]+?src="([^"]+)"/
/[\u4e00-\u9fa5]+/u
正则表达式的学习要结合案例,单纯的学习正则规则是没有用的,经过几个案例来学习,怎么使用,遇到的问题,这样的学习要高效不少,并且很是的实用
下面的文章我将学习正则表达式中的环视
,一块儿期待