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