请问正则表达式中的?=
是什么意思?比如在这个表达式中它有什么作用:
(?=.*\d).
请问正则表达式中的?=
是什么意思?比如在这个表达式中它有什么作用:
(?=.*\d).
?=
是正向先行断言的一种零宽断言。它表示捕获的匹配必须紧随括号内的内容,但该部分不会被捕获。
你的示例意味着匹配后面需要有零个或多个字符,然后是一个数字(但这部分也不会被捕获)。
match()
时,它会匹配某些字符串,但返回的匹配字符串不包括由?=
排除的字符? - scarface(?=pattern) 是一种零宽度的正向先行断言。例如,/\w+(?=\t)/
匹配一个单词后面跟着一个制表符,但不会包括制表符在 $&
中。
以下表达式将查找文件名中扩展名之前的最后一个数字集(不包括点(.))。
'\d+(?=\.\w+$)'
file4.txt将匹配4。
file123.txt将匹配123。
demo.3.js将匹配3以此类推。