正则知识要点
匹配字符
? 匹配前面0次或1次。
+ 匹配前面1次或多次。
* 匹配前面0次或多次。
边界
\b 放在词前就是前边界, 放在后就是后边界.
通常情况下,以 空格、段落首行、段落 尾、逗号、句号 等符号作为边界,值得注意的 是,分隔符“-”也可以作为边界。
非边界字符就是边界字符的边界.
“\B”,它用来匹配不在边界的 字符。
“^” “$” 全文边界的头和末. 注意^放在[]中表示排除,如[^1-5],该字符不是1~5之间的数字.
贪婪匹配和惰性匹配
?字符, 当该字符紧跟在任何一个其他限制符 (*, +, ?, {n}, {n,}, {n,m}) 后面时,匹配模式是非贪婪的。非贪婪模式尽可能少的匹配所搜索的字符串,而默认的贪婪模式则尽可能多的匹配所搜索的字符串。例如,对于字符串 "oooo",'o+?' 将匹配单个 "o",而 'o+' 将匹配所有 'o'。
后向引用
\数字 如找出重复的单词 (\w+) \1 , 有()的都加入后向引用集中, 如果不要加入, 则看"非获取匹配".
后向替换
$数字 替换时用到
非获取匹配
符号"?:", 如(?:xxx) 就是括号内的内容不会被后向引用.
正向预查
符号"?=", 如xxx(?=yyy) 将xxx匹配出来, 但yyy不会, 就是取括号的前部分.
负正向预查
符号"?!", 如xxx(?!yyy) 将xxx匹配出来, 但yyy不会, 就是取括号的前部分.
以下js不支持
反向预查
符号"?<=", 如(?<=xxx)yyy, 将yyy匹配出来, 但xxx不会, 就是取括号的后部分.
负反向预查
符号"?<!", 如(?<!xxx)yyy, 将yyy匹配出来, 但xxx不会, 就是取括号的后部分.
js 正则函数有 match、exec、test、search、replace、split
php正则函数有
preg_filter — 执行一个正则表达式搜索和替换
preg_grep — 返回匹配模式的数组条目
preg_last_error — 返回最后一个PCRE正则执行产生的错误代码
preg_match_all — 执行一个全局正则表达式匹配
preg_match — 执行匹配正则表达式
preg_quote — 转义正则表达式字符
preg_replace_callback_array — Perform a regular expression search and replace using callbacks
preg_replace_callback — 执行一个正则表达式搜索并且使用一个回调进行替换
preg_replace — 执行一个正则表达式的搜索和替换
preg_split — 通过一个正则表达式分隔字符串