我眼里的正则
/([^&]*)(&|$)/ === 龘靐齉齾龗麤鱻爩龖吁 灪麣鸾鹂鲡驫饢籱癵爨 滟厵麷鸜郁骊钃讟虋纞 龞齽齼鼺黸麢鹳鹦鸙鸘
- 这是什么
- 这又是什么
- 我是谁,我在哪里,我为什么要怼正则
面对现实(ha sa ge?)
在个人日常开发中,其实用到的正则匹配也不算太多(太菜所以接触不了太多)。每次遇到需要正则去处理的表达式,基本搜索引擎敲几下就出来了,自己也想弄懂检索出来的这么一段正则是什么个意思,总是看不懂,要么就是看懂了也就马上忘了。抱着侥幸的心理,一直拖到了现在。今儿,我想下个战书,持续作战下去。
学习过程
主要是想要依靠大量平日里经常接触的正则表达式下手,例如:手机号码、邮箱、密码强度、关键字替换、简单模板引擎正则部分以及比较有意的部分。
来,进入枯燥的关键字(主要元字符)
匹配符
代码 | 描述 |
---|---|
\w | 匹配字母或数字或下划线或汉字 |
\W | 匹配任意不是字母,数字,下划线,汉字的字符 |
\s | 匹配任意的空白符 |
\S | 匹配任意不是空白符的字符 |
\d | 匹配数字 |
\D | 匹配任意非数字的字符 |
特殊符
代码 | 描述 |
---|---|
. | 匹配除换行符以外的任意字符 |
^ | 匹配字符串的开始 |
$ | 匹配字符串的结束 |
\ | 匹配这些特殊符,必须首先使字符"转义", ( => ( |
| | 相当于或则一般来说是 条件A 或则 条件B 满足其一足以 |
() | 标记一个子表达式的开始和结束位置,这个会在系列(二)中怼 |
[] | 暂时理解为任选其一,[0-4] 01234中的任何一个 |
限定符
代码 | 描述 |
---|---|
* | 重复零次或更多次 |
+ | 重复一次或更多次 |
? | 重复零次或一次 |
{n} | 重复n次 |
{n,} | 重复n次或更多次 |
{n,m} | 重复n到m次 |
我看烦了,赶紧整例子
1 邮箱
var emailReg = ^[A-Za-z\d]+([-_.][A-Za-z\d]+)*@([A-Za-z\d]+[-.])+[A-Za-z\d]{2,4}$ ;
---- ^以xxx开头,xxx是什么呢,就是[A-Za-zd\d]+;
---- [A-Za-zd\d]+是啥子东西,[]是任选其一,A-Za-zd\d 大小写英文加数字,+ 出现的次数必须 >= 1;
---- 那么[-_.]就简单了,- _ . 这三个符号任选一个哈;
---- * 的意思就是 >=0,大概就是出不出现随便你;
---- @ 就是@这个字符,不要以为跟*搭配在一起会神圣,关键字特殊符号就那么几个;
---- {2,4}$,前面()或者[]里面的内容长度要满足2-4之间,并且以这几个结尾,也就是$的作用;
A:什么鬼,例子不是应该从简单到难循序渐进吗,你会教吗???
me:不...不是,咱们可以拆开来吗,拆开不就差不多了,刚好涵盖大部分基础。
2 手机号
这个给你整两个遛遛
var A = /^1[34578]\d{9}$/;
var B = /^1(3|4|5|7|8)\d{9}$/;
---- A,看过邮箱,也八九不离十能看到A了,我就一句话说了:
^1 数字1开头的,第二位是[34578]中的任意一个,再加上\d{9}$ 9个数字结尾;
---- B 区别主要在于(3|4|5|7|8),意思跟上面的[34578]一样,白话文就是 你要么是3要么是4要么是5要么是.....嘿嘿;
3 简单模板引擎替换,URL参数获取
写到这里,发现要涉及捕获,我想放到系列(二)里面,你不愿意也不行。大概就是:
-- var nameA = ‘小花;
-- <div>{#nameA#} <div >
<div>小花<div >
4 密码强度
有点复杂,条件多,心也累,又发现有 ?! 的表达式,属于零宽断言,可能要进阶到(三了);看到这里有没有觉得像个水文了,委屈.jpg,我只是拆分了循序见见嘛~
简单入门总结
其实在我现在看来正则也不是那么遥不可及,我是为了攻克它,所以选择写blog来巩固学习。当你看到这里的时候,可能你学到的东西已经跟我写这里的时候相当了,就差要你自己动手去实践了,这也是我写作的目的,没有难的语言,只有懒的人。