正则-基础
关于元字符 参考: https://tool.oschina.net/uploads/apidocs/jquery/regexp.html
1.正则有两种模式,一种为贪婪模式(默认),另外一种为懒惰模式,以下为例:
?的一个用法1 匹配0次或1次。 用法2:作为正则的懒惰模式。
(abc)dfe(gh)
对上面这个字符串使用(.*)将会匹配整个字符串,因为正则默认是尽可能多的匹配。
虽然(abc)满足我们的表达式,但是(abc)dfe(gh)也同样满足,所以正则会匹配多的那个。
如果我们只想匹配(abc)和(gh)就需要用到以下的表达式:
(.*?)
在重复元字符*或者+后面跟一个?,作用就是在满足的条件下尽可能少匹配。
1-2 .点
匹配除“\n”之外的任何单个字符。要匹配包括“\n”在内的任何字符,请使用像“(.|\n)”的模式。
例如正则表达式r.t匹配这些字符串:rat、rut、r t,但是不匹配root。
正则表达式 .*? 是什么意思啊?
*表示任意数量,它跟.配合,.*表示任意数量的任意字符,?表示懒惰匹配。
1-3 *匹配0或多个正好在它之前的那个字符。
例如正则表达式。*意味着能够匹配任意数量的任何字符。
- *在正则表达式中代表匹配前面的元素零次或多次。它用于匹配前一个字符、子表达式或组的零个或多个重复。
- 例如,正则表达式
ab*c会匹配字符串"ac"、"abc"、"abbc"等,因为b*匹配前面的'b'零次或多次,所以它可以匹配包含零个或多个'b'的字符串。
1-4 ?匹配0或1个正好在它之前的那个字符。
匹配0次或1次。
注意:这个元字符不是所有的软件都支持的。
1-2.组合起来
表达式 .* 就是单个字符匹配任意次,即贪婪匹配。
表达式 .*? 是满足条件的情况只匹配一次,即最小匹配.
懒惰模式正则:
src=".*?"
结果:src="test.jpg"
w 和 W
\w 匹配字母、数字、下划线。等价于’[A-Za-z0-9_]’。
\W 匹配非字母、数字、下划线。等价于 ‘A-Za-z0-9_’
\W+:匹配一个或多个非字母进行切割,匹配到的非字母不缓存;
(\W+):匹配一个或多个非字母进行切割,匹配到的非字母全部缓存;
(\W)+:匹配一个或多个非字母进行切割,匹配到的非字母缓存最后一位;
[\W]+:匹配一个或多个非字母进行切割,匹配到的非字母不缓存;(跟\W+一样)
[\W+]:匹配一个非字母进行切割,匹配到的非字母不缓存(加号只是相当于一个符号,但与\W含义重叠,无效)。
^ 和 $
^字符表示开头,$字符表示结尾
i是忽略大小写,g是全局
/[h]/gi
全局搜索h和H
\s表示空白符,+表示多个空白符
* [\s]表示,只要出现空白就匹配
* [\S]表示,非空白就匹配
1.中括号[]: 匹配单个字符是否属于中括号中的⼀个字符
/\s+/g
匹配多个空格
2.⼤括号{ }, ⽤于重复次数, ⼤括号左边表达式的匹配次数
3.⼩括号( ), 表⽰⼀个⼦表达式
字符串: hello world!!
js正则表达式: /(ell)/g
ell
匹配到的内容是: h
o world!!
此处注意, 如果字符串是helo 则是匹配不到任何内容的
⼩括号中的内容是⼀个完整的正则表达式
1. (ha){2} 匹配 内容为haha
2. ((ha){2} hello) 匹配到的内容为: haha hello
3. (a | b){2} 能够匹配到的内容为 aa bb ab ba