admin';?>

首页 / php code

正则笔记

By admin  •  2020-03-01 18:14:30  •  202次点击
永久外链: https://i.otherhill.com/static/707357825ba511eab405809b202ce664.html

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions/Assertions
Characters Meaning
x(?=y)

Lookahead assertion: Matches "x" only if "x" is followed by "y". For example, /Jack(?=Sprat)/ matches "Jack" only if it is followed by "Sprat".
/Jack(?=Sprat|Frost)/ matches "Jack" only if it is followed by "Sprat" or "Frost". However, neither "Sprat" nor "Frost" is part of the match results.

x(?!y)

Negative lookahead assertion: Matches "x" only if "x" is not followed by "y". For example, /\d+(?!\.)/ matches a number only if it is not followed by a decimal point. /\d+(?!\.)/.exec('3.141') matches "141" but not "3.

(?<=y)x

Lookbehind assertion: Matches "x" only if "x" is preceded by "y". For example, /(?<=Jack)Sprat/ matches "Sprat" only if it is preceded by "Jack". /(?<=Jack|Tom)Sprat/ matches "Sprat" only if it is preceded by "Jack" or "Tom". However, neither "Jack" nor "Tom" is part of the match results.

(?<!y)x

Negative lookbehind assertion: Matches "x" only if "x" is not preceded by "y". For example, /(?<!-)\d+/ matches a number only if it is not preceded by a minus sign. /(?<!-)\d+/.exec('3') matches "3". /(?<!-)\d+/.exec('-3')  match is not found because the number is preceded by the minus sign.

正则贪婪模式:
/(<pre\s*[^>]*>)([\s\S]*?)(<\/pre>)/gi
vs
 /(<pre\s*[^>]*>)([\s\S]*)(<\/pre>)/gi

在表示重复的字符后面加问号,比如+?,*?,{2,3}?可以停止匹配的贪婪模式。
var pattern=/\w{2,3}/;
console.log("aaaa".match(pattern)[0]);
/*结果"aaa";贪婪模式下会尽可能多的匹配,所以会匹配3个重复的字符*/

var pattern2=/\w{2,3}?/;
console.log("aaaa".match(pattern2)[0]);
/**结果"aa";加问号后会尽可能少的匹配重复次数,所以匹配到了2个重复的字符*/

{n,} n 是一个非负整数,至少匹配n 次。

{n,m} m 和 n 均为非负整数,其中n <= m。最少匹配 n 次且最多匹配 m 次。在逗号和两个数之间不能有空格。
 
? 当该字符紧跟在任何一个其他限制符 (*, +, ?, {n}, {n,}, {n,m}) 后面时,匹配模式是非贪婪的。非贪婪模式尽可能少的匹配所搜索的字符串,而默认的贪婪模式则尽可能多的匹配所搜索的字符串。

(?:pattern) 匹配pattern 但不获取匹配结果,也就是说这是一个非获取匹配,不进行存储供以后使用。
 
(?=pattern) 正向预查,在任何匹配 pattern 的字符串开始处匹配查找字符串。这是一个非获取匹配,也就是说,该匹配不需要获取供以后使用。

x|y 匹配 x 或 y
[xyz] 字符集合
[^xyz] 负值字符集合
[a-z] 字符范围,匹配指定范围内的任意字符
[^a-z] 负值字符范围,匹配任何不在指定范围内的任意字符

\s 匹配任何空白字符,包括空格、制表符、换页符等等。等价于[ \f\n\r\t\v]。
\S 匹配任何非空白字符。等价于 [^ \f\n\r\t\v]

\n 匹配一个换行符。等价于 \x0a
\r 匹配一个回车符。等价于 \x0d

\w 匹配包括下划线的任何单词字符。等价于'[A-Za-z0-9_]'
\W 匹配任何非单词字符。等价于 '[^A-Za-z0-9_]'

\d 匹配一个数字字符。等价于 [0-9]
\D 匹配一个非数字字符。等价于 [^0-9]

\b 匹配一个单词边界,也就是指单词和空格间的位置
\B 匹配非单词边界

匹配中文  ^[\u0391-\uFFE5]+$


0 回复 | 直到2022-10-01 00:21添加回复

回复

最近更新

私信给我
生成图片 生成二维码 生成密码
清空