欢迎点击「算法与编程之美」↑关注我们!
本文首发于微信公众号:"算法与编程之美",欢迎关注,及时了解更多此系列文章。
1 问题描述
在入门学习js时,引用数据类型数组(Array)拥有很多的方法,其中replace、match与search方法就会使用到正则表达式。正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特殊字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。通俗来讲:它可以用来检查一个字符串是否含有某种子串、将匹配的子串做替换或者从某个字符串中取出符合某个条件的子串等。
2 问题分析
为什么需要使用正则表达式呢?当我们对一个复杂的字符串进行比较时,而我们想要表达的意思也是较复杂的时候,那么正则可以起到简化代码的作用:
找出字符串中的所有数字:
从上面的这个例子可以明显的感受出:正则表达式的使用,使代码得到简化,也让逻辑变得简单清晰。
而关于如我一样的初学者学习正则表达式时,则是一脸茫然和不知从何写。本文将简要对正则表达式的用法及规则进行简要梳理,如有不足或错误,欢迎在底部评论进行反馈于我。
3 解决方案
①了解正则表达式的基本元字符
首先学习正则的第一步,肯定是先去知道各个元字符所代表的意思,避免在真正去使用的时候的茫然感。也是入门的第一步。正则有很强的灵活性、逻辑性,将复杂代码采用极简的方式进行表达,因此对于像笔者一样的初学者会比较晦涩难懂。
②如何定义一个正则表达式
1、使用正则表达式直接量,将其包含在一对斜杠(/)之间的字符。
var pattern = /s$/;
2、使用RegExp()构造函数。
var pattern = new RegExp('s');
两个意义为匹配所有以字母(s)结尾的字符串。
③js 中的三个修饰符(i、g、m)
修饰符是放在“/”符号之外的,换句话说,它们不是出现在两条斜杠之间的,而是在第二条斜杠之后。i 执行不区分大小写的匹配; g 执行一个全局匹配,即找到所有的匹配,而不是在找到第一个之后就停;m 多行模式匹配,在这种模式下,如果待检索的字符串包含多行,那么^和$字符除了匹配整个字符串的开始和结尾之外,还能匹配每行的开始和结尾。
④RegExp中有两个个方法可以直接被应用
exec() 用于检索字符串中的正则表达式的匹配。该函数返回一个数组,其中存放匹配的结果。如果未找到匹配,则返回值为 null。
test() 用于检测一个字符串是否匹配某个模式,如果字符串中含有匹配的文本,则返回 true,否则返回 false。
4 总结
对于初学者来说,先能够做到简单地去理解正则表达式的意思,能够应用分组及exec和test方法即可,待遇到问题再进行查表和深入理解即可。
参考文献
百度百科
菜鸟教程
温馨提示:点击页面右下角“写留言”发表评论,期待您的参与!期待您的转发!
领取专属 10元无门槛券
私享最新 技术干货