什么?=正则表达式中的意思?

时间:2009-10-15 07:55:01

标签: regex

我可以知道?=在正则表达式中的含义吗?例如,它在这个表达式中的意义是什么:

(?=.*\d).

4 个答案:

答案 0 :(得分:58)

?=是一个积极的前瞻,一种zero-width assertion。它的含义是所捕获的匹配必须跟在括号内的任何内容,但该部分不会被捕获。

您的示例意味着匹配需要后跟零个或多个字符,然后是一个数字(但不再捕获该部分)。

答案 1 :(得分:8)

(?= pattern)是零宽度正向前瞻断言。 例如,/\w+(?=\t)/匹配单词后跟标签,而不包括$&中的标签。

答案 2 :(得分:0)

下面的表达式将找到文件名在扩展名之前设置的最后一个数字(不包括点(。))。

'\d+(?=\.\w+$)'

file4.txt 将匹配 4

file123.txt 将匹配 123

demo.3.js 将匹配 3 ,依此类推。

答案 3 :(得分:0)

如果您想屏蔽信用卡号(执行号)的后4位数字/字符,可以在正则表达式中使用?=

cc = "1234-5678"
cc.replace(/.(?=....)/g, '#');

cc = #####5678