1.string.replace(RegExp,replacement):用来将RegExp能匹配的文本替换为replacement,若设置为全局模式,所有能匹配的文本都会替换
如果要在replacement字符串中引入分组,则可以使用$num.如:
“2010-12-20”.replace(/(\d{2}-(\d{2})-(\d{2})/,"$2/$3/$1")
str.replace(RegExp,function) 这个方法里的函数的接收参数是一个字符串,返回参数也是一个字符串,如:document.write("one two three".replace(/\bt[a-zA-Z]+\b/)g, function(m){return m.toUpperCase()}))
one TWO THREE
str.split(RegExp): 这个方法使用一个正则表达式切分字符串
2.字符组
没加^和$的str,是指可以匹配str的任意子串,加了代表要匹配整个str
[0-9]===\d, \d能匹配的字符\D一定不能匹配,互补(注意只能匹配一个字符)
[0-9a-zA-Z]===\w,\w能匹配的字符\W一定不能匹配,互补
[ \t\r\n\v\f]====\s, \s能匹配的字符\S一定不能匹配,互补
所以[\s\S]、[\w\W]、[\d\D]能匹配“任意字符”
排除型字符:[^...],在当前位置匹配一个没有列出来的字符,必须要匹配一个字符串
元字符:[、]、^、$、- 都是元字符,“-”只是用来用来指示范围
3.量词 限定之前的元素出现,这个元素可以是一个字符或者一个字符组还可以是一个表达式
6个数字:\d{6}
str的长度范围:{m,n} 限定之前的元素能够出现的次数,m是下限,n是上限,都是闭包。\d{4,6}表示单个字符至少出现4次,最长6个字符。若不确定上限也可以省略,写成{m, }。如果没有明确下限则默认就是0
常用量词:* ==={0, },可能出现也可能不出现,出现次数没有上限
+ ==={1, },至少出现一次
?==={0,1},至多出现1次,也可能不出现
例子:匹配http/https, 可以用https?
匹配价格100/¥100,¥?100
html中的tag匹配:^<[^>]+>$, 中间的若干字符用[^>]+来表示
双引号:“[^"]*"
4. 提取数据
re.findall(pattern,string),在str中找到满足pattern的字符串,返回的是一个数组。
5. 点号(.)
可以匹配除了换行符\n 之外的任意字符
6. 匹配优先量词和忽略优先量词
7.转义
8.分组
括号的功能就是分组,分组可以用量词限定出现次数
匹配open tag的正则表达式:
openTagRegex=r"^<^/](^>]*[^/])?>$"
emailRegex=
emailRegex=r"^[-\w.]{0,64}@([-a-zA-Z0-9]{1,63}\.)*[-a-zA-Z0-9]{1,63}$"
身份证号码
identidyRegx=r"[1-9]\d{14}(\d{2}?[0-9x]?)"
9.多选结构
(...|...)在括号内以竖线分开多个子表达式,这些子表达式也是多选分支
identidyRegx=r"([1-9]\d{14}|[1-9]\d{14}\d{2}[0-9x])"
10,捕获分组
使用括号(捕获型括号)之后,正则表达式会保存每个分组真正匹配的文本,等到匹配完成之后,通过group(num)之类的方法引用分组在匹配时捕获的内容。num表示对于括号的编号,从左向右从1开始。
可以用捕获分组提取具体信息
11. JS中删除多余的空格字符 (?m) 表示匹配多行
删除行首的空白字符-使用的正则表达式是:(?m)^\s+
删除行尾的空白字符串的正则表达式:(?m)\s+$