正则表达式
正则表达式我们程序员经常使用,但是经常使用别然写好的通用正则表达式,如邮件的检验,手机号码的检验等等。
但是针对一些我们业务的具体场景,就要我们自己编写了。下面我从头讲下哈…………。
首先是概念(大家读下就好,实际应用中会慢慢感受到)
概念: 正则表达式是一种文本模式, 使用单个字符串来描述,匹配一系列匹配某个句法规则的字符串。
注:正则表达式虽然繁琐,但是它是功能强大的
正式开始(请上车)
- 我们想匹配字符串a,用正则怎么做呢?
机智的你说 太简单了 正则表达式就是 /a/ 呗 - 那我们想匹配a和A呢?
机智的你说,so easy呀 /a/i (注: i为ignore的缩写, 表示忽略大小写)
哈哈 厉害厉害
那我们就从 /a/i 讲起
正则表达式分为两部分 /主体/修饰符 没错 /a/i 中的 a为正则表达式的主体, i为正则表达式的修饰符
那 /b/i 呢 ? so easy b为正则表达式的主体, i为正则表达式的修饰符呀
厉害呀 我的小伙伴 _
下面我们讲解正则表达式的这两部分: 正则表达式的主体和正则表达式的修饰符 (这两部分搞定, 我们就可以洗洗睡了, 加油呦)
那我们从最难的一部分先开始吧 (做好战斗的准备了吗)
第一部分: 修饰符
标准的正则表达式修饰符 有 i,g两个
i- ignore的简写 代表匹配是不区分大小写的 还记得 /a/i 吗? 没错,这个正则表达式即匹配A,又匹配a
那我想正则表达式既匹配B又匹配b呢 哈哈哈 没错 /b/i 或者 /B/i 这两个正则表达式都匹配这一个要求
g-修饰符 代表全局查找
什么意思呀? 比如我们 用正则表达式 /a/ 去匹配字符串aaa 会发生什么? 你猜猜呗。 我们运行代码执行下,看下和你猜的一样不?
怎么验证你的猜想呢?抱歉,和你聊得太开心,忘记说了。但是很简单 打开一个浏览器(推荐Google的Chrome), 然后看图
按下Enter键 看看和你想的结果一样不? 嗯? 执行结果为:[“a”, index: 0, input: “aaa”, groups: undefined], 结果似乎是 ‘a’,(后面的其他属性可以先忽略, JavaScrpit自己的一些特性,相当于对正则表达式做一些补充说明, 暂时忽略)。 噫,结果怎么只是一个a呢?不应该有三个a吗?
聪明的你肯定想到了, 这就是g修饰符的作用了,你将/a/变为/a/g执行下试试?即输入:‘aaa’.ma