正则表达式之小有名气

上一篇文章已经讲了如何匹配简单的字符串,如何全局搜索,以及一些特殊字母i,g,m所表明的含义
这篇文章讲的内容有点多最好分两次读,不过不用担忧不少东西并不须要你特地记住
知道有那么一回事先用先查都OKcss

再谈^和$

以前已经了解过1表示除a,b,c以外的字符,如今又要多一种用法了
/^test/  表示以test开头的字符 这里的^表示以...开头
那么$表示什么呢? 它的含义是以...结尾
/test$/ 表示以test结尾的字符

转义

首先咱们要知道并非全部的字符都与自身等价的,好比/hello/表示咱们要匹配‘hello’字符,可是若是想匹配food$并不能这么写/food$/,由于$有独特的含义,就像咱们上篇文章学到的[],^这几个符号同样。若是想要匹配'food$'这个字符串,那就须要用反斜杠进行转义,通俗的说就是在特殊符号前面加上 就像这样
/food\$/ 匹配food$字符

从webpack配置学正则

我copy了一段webpack配置,只看rules中test表示的正则就能够
在正则中.也有特定的含义,因此若是把它当字符进行匹配的话也要进行转义根据上面所学到的,判断下面代码中的正则表达式所表明的含义,答案我已经写在注释中了
module.exports = {
  module: {
    rules: [
      { test: /\.css$/, use: 'css-loader' },//以.css结尾的 使用css-loader处理
      { test: /\.ts$/, use: 'ts-loader' }// 以.ts结尾的
    ]
  }
};

重复匹配

若是要匹配四个‘a’字符,咱们固然能够用/aaaa/这样表示,若是匹配5个'a' 10个'a'呢?正则没那么‘傻’早已为咱们准备了简便方法/a{4}/ 表示匹配含有连续4个'a'的字符
在重复选项上,正则提供了不少方式
  • 在一个字符后面加一个'?',能够定义该字符是可选的(能够出现一次或者根本不出现)
/t?est/  能够匹配 test 或者 est
  • 若是一个字符要出现一次或屡次(至少出现一次),可使用加号'+'
/t+est/ 能够匹配test ttest tttest 而不能匹配est
  • 若是一个字符要出现零次或屡次,可使用星号'' (注意与?的区别,?表明要么不出现要么只能出现一次 表明要么不出现要么出现不止一次)
/t*est/ 能够匹配test ttest tttest est
  • 也能够在字符后面的花括号里指定一个数字来表示重复次数
/a{4}/ 匹配包含连续4个a的字符串
  • 也能够在字符后面的花括号指定一个重复次数的区间
/a{4,10}/ 匹配任何含有连续4个至10个a的字符串
  • 还能够在省略区间中第二个值(可是要保留逗号) 这里直接上代码,用文字叙述容易迷糊
/a{4,}/ 若是逗号后面不写第二个参数那么表示匹配任何含有连续4个或多于4个a的字符串
这些重复操做符能够是贪婪的能够是非贪婪的,默认状况它们是贪婪的
这里不用口语叙述,看代码更直观
遇到连续四个a即中止搜索
var str = "aaaabbbcaadda"
var newStr = str.replace(/a+/,'嘿')//"嘿bbbcaadda"
由于加了g进行全局匹配,咱们看一看有哪些字符符合条件
开头的4个a
c后面的2个a
d后面的a
这就是贪婪匹配遇到成串的符合条件的字符,将匹配这个’串‘

var str = "aaaabbbcaadda"
var newStr = str.replace(/a+/g,'嘿')//"嘿bbbc嘿dd嘿"
若是后面在'+'后跟了'?'则表示进行非贪婪匹配,具体结果请看注释
var str = "aaaabbbcaadda"
var newStr = str.replace(/a+?/g,'嘿')//"嘿嘿嘿嘿bbbc嘿嘿dd嘿"

分组

上面已经说到能够用/t+est/这种用法,可是+只影响它前面的t,若是想让+影响多个字符可使用括号进行分组
/(ab)+/ 匹配一个或多个连续出现的字符串'ab'
var str = "abcdababef"

var newStr = str.replace(/(ab)+/g,"嘿")//"嘿cd嘿ef"
请注意cd后的连续两个ab被替换成一个嘿而不是两个

'|'操做符

可使用竖线表示或者
/a|b/ 匹配a或b字符

/(ab)+|(cd)+/ 匹配出现一次或屡次的“ab” 或者“cd”
这一篇概念有点多,不须要一下看完,分两次看好了。原本想把一些预约义字符类写完的,转念一想灌输太多内容是不利于学习的,并且那些东西也并非很重要,只是用的时候现查的一些字母而已。因此留到下章再说

  1. abc
相关文章
相关标签/搜索