(?=pattern) 正向先行断言 代表字符串中的一个位置,紧接该位置之后的字符序列能够匹配pattern。
以下哪些正则表达式满足regexp.test('abc') === true?
A
/^abc$/
B
/...(?=.)/
C
/[ab]{2}[^defgh]/
D
/[defgh]*/
正确答案:ACD
补充一下B的先行断言:
(?=pattern) 正向先行断言
代表字符串中的一个位置,紧接该位置之后的字符序列能够匹配pattern。
例如对”a regular expression”这个字符串,要想匹配regular中的re,但不能匹配expression中的re,可以用”re(?=gular)”,该表达式限定了re右边的位置,这个位置之后是gular,但并不消耗gular这些字符,将表达式改为”re(?=gular).”,将会匹配reg,元字符.匹配了g,括号这一砣匹配了e和g之间的位置。
.匹配除“\n”和"\r"之外的任何单个字符。要匹配包括“\n”和"\r"在内的任何字符,请使用像“[\s\S]”的模式。\S和\s的意义不同,\S是匹配任意不是空白符的字符
所以说在这里/...(?=.)/匹配的是:
前面任意三个字符,但是后面必须跟一个任意字符(除了\n和\r)。
但是题目给出来的字符串只有三个字符,该正则表达式至少要四个字符。
A.这算是完全匹配了,^a表示以a开头,c$表示以c结尾,中间再夹个b
B."."表示匹配除换行符的任意字符,"x(?=y)"匹配'x'仅仅当'x'后面跟着'y'.这种叫做先行断言。所以这里可以理解为:
1.当没有换行符时,只要字符前面是三的倍数/.../,并且后面跟有字符/(?=.)/,就可匹配,如1234,abcdefg,234wewrwwr(下划线处为匹配项)
2.有换行符时,每一行要重新匹配,即字符长度独立,从0开始(下划线处为匹配项)
121sfs12
12sd
323fd
C.[ab]表示a或b {2}表示长度为2 [^defgh]表示非defgh的字符,所以可匹配的有,aac,bbc,abc,abcd等,注意这里匹配长度为3
D."*"表示0或者多个字符,这里可匹配空,或者括号内任意字符
__EOF__

本文链接:https://www.cnblogs.com/longmo666/p/17834939.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)