正则表达式

76 阅读3分钟

正则表达式也是开发正比较常用的一些知识,下面是是刚开始开发是学习总结的一些知识,平时使用基本足够了,当然还想学的更精,需要自行搜索了,下面就是简单整理了一些以前的正则表达式内容

先看一段正则表达式

/正则表达式/gi  

注意:g:全局标志(全局搜索默认最佳、最快匹配一个),i:忽略大小写,m用作多行标志(基本上用不到))

注意2:斜杠表示是正则表达式,在字符串的正则下,没有外面斜杠,反而里面的反斜杠需要写成双反斜杠转义

如果查找一个固定的字符直接写就行了例如:/哈哈/gi

正则表达式除了上面的形式,还有字符串格式,此时需要\需要转移,(\d)之类的也可以用\d来表示 \表示的是一个\相当于把\转译为字符串

(\d)(\d)\2\1   //   表示反向应用前面的正则表达式如果一个字符串是4224,\d前面两个\d表示的是4和2  ,后面的表示是2和4,这样就匹配处出了4224

(\d){5}表示的是有五个数字字符(字符可以不相同)

限定符

{n}表示的是出现的次数

{n,m}表示的是表示一个区间,最多m个,最少n个

ps:注意匹配的时候符合贪婪原则,也就是优先满足匹配最多的,然后再匹配最少的

选择匹配符:(字符串出现的次数)

+表示匹配1到多个字符

*表示匹配0到多个字符

?表示匹配0到1个字符

. 表示匹配除 "\n" 之外的任何单个字符。要匹配包括 '\n' 在内的任何字符,请使用象 '[.\n]' 的模式

分组组合和反向引用符:

(a|abc) 表示a或者abc(组合之间的或)

[a-z]表示a到z之间的任意一个字符(单个字符的或,ps:两个字符之间加上-可以表示区间,但是只有几个字符就是真的只匹配当中的一个字符)

^表示反向引用符号

例如[^a-z]就是除了a-z之外的其他字符,注意要写到里面,写到外面表示的是字符串开始

默认都是且的关系,没有单纯到包含匹配逻辑,可以通过或的方式转化

[0-9]+[a-zA-Z]+|[a-zA-Z]+[0-9]+    //需要数字和字符同时存在

需要转义的字符:.  *  +  (  )  $  ?  [  ]  ^  {  }  

正常转义加上反斜杠,如 \.,或者使用[],如:[.]  使用字符拼接时(例如RegExp),需要使用双反斜杠\\.

\d表示任意一个数字

\D表示任意一个非数字,相当于[^0-9]

\w表示[a-zA-Z_]表示任意字符串或者_

\W表示非字符或者下划线,相当于^\w

.匹配任\n之外的所有字符

\s匹配一个任何空白字符(空格,制表符号 (\t))

\S即配以任何一个非空白字符

\B 不匹配边界

\b 匹配边界

定位符

^表示匹配字符串的开始位置

$表示匹配字符串的结束位置

前瞻运算符

?=规则((?=规则)) 前瞻运算符,匹配时,会往前看,看看是否符合制定规则,符合则可以完成自定替换功能

ps:为了避免跟其他表达式混淆,一般会加上小括号也就是 (?=规则)

匹配参数变量()与$1

$1用于替换匹配()参数内容时,保证在替换过程中,能原封不动的保留或者拼接其他字符到指定位置,例如

注意的是,需要在匹配的正则外面加上小括号(),替换内容使用 $1 可以代替括号内的内容,没有在括号内的但匹配到的内容会被清理

a123b123c123  我们在所有的字母前加上一个空格 .replace( /([a-z])/g, ' $1')

ps:正则串都是现创建现用,否则可能会出现,继续之前的索引继续匹配,出现意想不到的bug