0%

【Js学习笔记】(3)正则表达式

一、什么是正则表达式

正则表达式,英文是Regular expression,常缩写为regex或者regexp,或直接就是re。下面也直接称呼成RE了。 在我看来,这个名字真的把RE说得太复杂了,一个“正则”就把大家搞不明白这个到底是什么,望而却步了,还不如不如翻译成一般表达式更加通俗。 RE它实质就是我们常说的归纳总结,它用一种“放之四海而皆准”的法则去匹配字符(串)。而具体点,就是它用一种规定的、描述性的语言(我们在这里称它为RE语言吧)去描述一个我们想要的字符串,比如,我想要一个长度是3的字符串、我想要一个包含%%%这样pattern的字符串等等...这些字符串因为身上有着我们想要的“特征值”,而RE就是用来描述它的特征,让它去适配更多符合它特征的字符串。 RE因为它本质上是一种描述性的语言,所以它的规律性是很明显的,但是它只是一个表达式,这样的表达式往往缺乏层次感,所以阅读起来往往不便,提升其难度。

二、怎么使用正则表达式

说了那么多,可能需要看看RE究竟是什么才行,下面就用例子来介绍下RE的语法。 ### 2.1 通用匹配符

如同c语言中的printf()标准输出一样,RE也采用类似于%d,%s这样的转义符来实现对字符的要求,如下面所示:

  • :匹配字母或数字或下划线或汉字
  • 匹配数字
  • :匹配任意的空白符
  • . :匹配除换行符以外的任意字符
  • [] :匹配[]内的字符。如[abc]匹配abc中的任意字符,[a-z]匹配a到z范围的字符。

2.2 匹配长度控制

  • *:匹配长度不少于0
  • +:匹配长度大于零
  • ?:匹配长度为0或1
  • {n}:匹配长度为n
  • {m,n}:匹配长度为m到n内的数

2.3 匹配位置控制

  • ^$:字符串首尾匹配
  • 单词匹配

2.4 其他

待补充

三、Js中的正则表达式

3.1 表示方式

第一种方式,可直接用/RE/的形式来表示一个正则表达式。

如 var a = /[]*@163.com/来匹配一个163邮箱的用户名

第二种方式,利用RegExp对象生成一个RE。

如 var a = RegExp('[]*@163.com')。 ### 3.2 切分与分组

split():用RE的规则去切分字符串;如a.split(/[,]+/)来切分字符串里的空格或者逗号。 ():在正则表达式中分组,使得在正则表达式被执行后,返回了相应的组的字符。

3.3 测试运行

test():用来测试字符串是否符合我们定义的RE exec():将字符串与RE进行正则匹配,返回相应的子串(原字符串,以及如果有分组的话,则后续返回分组字符串),如果匹配失败,返回null。