正则表达式基于JavaScript的入门详解
Posted zheonaandonly
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了正则表达式基于JavaScript的入门详解相关的知识,希望对你有一定的参考价值。
关于正则表达式,和很多前辈聊起这个知识点时,他们的反馈都比聊其他技术谦逊,而和很多刚入门的程序员讨论时甚至会有觉得你看不起他。
的确,正则表达式从通常的应用来看,的确不难,比如电话,邮箱等验证。语法,逻辑都算不上复杂,我之前也认为正则表达式也算不上什么高大上的技术。
但是,改变我看法的是,有一次有个前辈给我出了一个题:
将一串数字从后向前每隔三位打点,例如“100000000000000”;
var str = "100000000000000"; var reg = /(B)(?=(d{3})+$)/g; console.log(str.replace(reg,"."));
//输出结果:100.000.000.000.000
后来他跟我说,这个题是百度有一年校招的最后一个题,20分。
有人会说,这个并不是唯一的解法。
不错,这的确不是,但是只有这个解法当年百度给了满分,其他解法就算答案正确,基本上都只给了3~5分。
或许这个事情告诉了我们,结果并不是编程的“结果”,程序的核心价值应该是效率。
正则表达式在基础应用领域的确不难,但是在实际解决问题的时候能用正则表达式化繁为简的不见得有多少人能做得到。
我对正则表达式也只能说是做到了解,写这篇博客的原因是希望能与大家互动学习深入的掌握正则表达式,有什么关于正则表达式的问题大家可以在评论区留言交流,也希望大家多多分享关于正则表达式的实际应用,同时,我也用过这篇文章总结一些关于正则表达式的基础知识点,方便大家查阅和学习交流,有什么地方总结的不正确的地方还希望大家多多指正。
正则表达式的基础知识点:
1.转义字符
2.元字符
3.区间——方括号[]
4.重复限定符(量词)
5.边界与属性
6.分组与子表达式及反向引用
7.条件或
8.捕获与非捕获
9.零宽断言
10.贪婪与非贪婪
以上就是正则表达式的所有知识点,内容之少,但是其分量在编程领域之重不言而喻,所有的编程语言都有正则表达式就说明了这一点。
我的总结没有根据知识点的难易程度来排序,在写这篇博客之前我也参考了别人的博客,甚至我开始学习的时候很大程度也是靠读博客,但是我总感觉有些方式并不是很合适,大部分的正则表达式入门博客都是基于难易程度排序来讲,而且还拆分的很细,有的之间有很大关联的知识点被拆分,中间还隔了几个知识点,理解起来费劲。
这么来讲吧,我看过好几本研究关于记忆和学习的书,它们都有一个共通点,就是讲究知识的关联性,甚至在一些记忆大师的理论里,他们为了强记一些没有关联的信息时都会特意采用一些其他关联性的将其关联起来,来加强记忆,比如很出名的《记忆宫殿》,好了,有点扯远了,我只想告诉大家我这样的总结安排会更加适合理解学习。
1.转义字符:“”
其实转义字符算不上完全的正则表达式的知识点。
将他放到这里来讲,而且还放到第一个来讲,是考虑到方便刚刚学习正则表达式的同学理解后面的知识点。
通俗的解释转义字符就是,通过“”来表达我们不能按照正常字符表达方式的字符。
示例,如果在一个字符串中有一个双引号字符:
var mark= "ab"cd"; console.log(mark); //输出ab"cd
反斜杠“”在字符串中的作用就是,将它后面的字符变成该字符串的文本,而本身不作为字符串的实际字符。
转义字符,也就是反斜杠""在程序逻辑上,作用是清除字符本身自带的语法含义。上一个示例就是利用反斜杠清楚了双引号的语法含义。
//1.本身不作为字符串的实际字符 var mark = "abcd"; console.log(mark); //输出结果:abcd //2.如果反斜杠是字符串的一个字符? var backslash ="\\";
console.log(backslash); //输出结果: //3.一个字符串中包含了一个反斜杠“”,恰好后面还跟了一个n或者r又或者0 //会出现什么情况,怎么解决 var n = "ab cd"; //输出结果:ab // cd var nn = "ab\\ncd"; //输出结果:ab cd var r = "ab cd"; //输出结果:abcd var rr = "ab\\rcd"; //输出结果:ab cd var zero = "ab cd"; //输出结果:ab cd var zeros = "ab\\0cd"; //输出结果:ab cd;
转义字符还有一个比较常用的实际开发应用,就是我们遇到一个结构比较复杂的字符,
但是字符串在通常的语法中不能换行,这时我们就可以采用转义字符来解决。
var inhtml = " <div>XXXXX</div> <ul> <li>XXX</li> <li>XXX</li> </ul>";
关于转义字符暂时就解释到这里,很简单的一个知识点,算是一个前期铺垫吧。
2.元字符
元字符 | 说明 |
. | 匹配除换行( )和回车符( )以外的任何字符 |
^ | 匹配字符串的开始位置。(边界部分详细介绍) |
$ | 匹配字符串的结束位置。(边界部分详细介绍) |
w | 匹配单词字符,即0-9A-z_;(区间部分详细介绍) |
W | 匹配非单词字符,即除了w以外的任何字符(区间部分详细介绍) |
d | 匹配数字,即0-9;(区间部分详细介绍) |
D | 匹配非数字字符,即除了d的任何字符(区间部分详细介绍) |
s | 匹配空白字符 。(区间部分详细介绍) |
S | 匹配非空白字符。(区间部分详细介绍) |
匹配单词边界, 即单词的前后两个位置。(边界部分详细介绍) | |
B | 匹配非单词边界,即不是单词的前后两个位置。(边界部分详细介绍) |