正则表达式,学了好多次了,但是没有经过大量的实践,总是易忘,唉...
通用正则语法
类
[abc]
表示匹配a或者b或者c的字符[^abc]
表示匹配不是a或者b或者c的字符,^
仅在[]
中取反,在其他情况下表示边界范围类
[a-z]
在中括号里面的-
表示范围,如需匹配短横线,则需在后面再加-
,如[0-9-]
预定义类:
.
匹配除了换行符以外的任何字符\d
匹配数字\s
匹配字母,数字,下划线\w
匹配空格(字母如果变大写则表示取反)
边界
^ $
为起始边界\b
单词边界\B
非单词边界
量词
?
匹配0个或1个+
匹配 >=1 个*
匹配任意多个{n,m}
a为最少,b为最多。若为{n}
,则为精确匹配;若为{n,}
,则匹配大于n个
匹配模式
默认的匹配模式是贪婪模式(即尽可能多的匹配)
若想将贪婪模式改成“廉洁模式(自创)”,只需在量词后面加上“ ? ”
默认情况下,量词制作用于紧挨着它的字符。如果想要破,可以用
()
来进行分组用
()
来进行分组后的分组内容可以用$1,$2,...
来获取
JS中的正则
正则对象
正则对象的属性有
g,i,m,lastIndex
test
方法,返回布尔值exec
方法,匹配不成功返回null
,否则返回结果数组,数组的第一个元素表示匹配的文本,第二个元素是与正则对象的第一个子表达式相匹配的文本(如果有),以此类推
与正则相关的字符串方法
-
search
方法,返回第一个匹配结果的index,否则返回null(它不会执行全局匹配) -
match
方法,如果不加‘ g ’,则返回null或数组,数组存放了与它找到的匹配文本有关的信息,第一个元素是匹配的文本,其余元素存放子表达式匹配的内容