正则知识要点

匹配字符

?  匹配前面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 — 通过一个正则表达式分隔字符串

posted @ 2017-03-17 18:40  wahgon  阅读(162)  评论(0编辑  收藏  举报