首页 > 试题广场 >

以下哪些正则表达式满足regexp.test('abc')

[不定项选择题]
以下哪些正则表达式满足regexp.test('abc') === true?
  • /^abc$/
  • /...(?=.)/
  • /[ab]{2}[^defgh]/
  • /[defgh]*/

补充一下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]”的模式。
  • 所以说在这里/...(?=.)/匹配的是:
    前面任意三个字符,但是后面必须跟一个任意字符(除了\n和\r)。
    但是题目给出来的字符串只有三个字符,该正则表达式至少要四个字符。
编辑于 2019-08-19 11:47:00 回复(5)
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或者多个字符,这里可匹配空,或者括号内任意字符
以上为个人见解,大家不妨自己测试下,推荐测试工具https://tool.lu/regex/
发表于 2019-08-19 10:33:30 回复(9)
/[^]/这种情况表示非
/^/这种情况表示以...开头
发表于 2019-11-14 20:44:05 回复(0)
首先A没问题百分百匹配abc
其次B   ...三个点没问题可以匹配到abc但是()内的字符串也必须匹配到故fail掉
再是C  []内匹配两次a或b故可以为aa、bb、ab、ba、[^defgh]表示匹配除了defgh之外的数故可以匹配;
最后D []内匹配d或者e或f或g或h,但是*代表匹配0或多次故也可以不匹配
发表于 2019-10-13 18:39:14 回复(2)
对于选项D
*代表着*前边的表达式可以为空,如果为空的话,正则式就是匹配空,换个角度想空就是无限大,任何字符串都可以匹配,不管你是abc还是其他。类似于色即是空空即是色,无中生有的哲学思想^_^。这是正则式的规则,个人觉得记住就好了,除非你以后吊到可以去制定规则

发表于 2020-03-28 17:44:46 回复(0)
D正确是因为 * 代表的是匹配 0 次或多次所以是正确的,这个是否匹配到的是 0 次
发表于 2020-07-29 09:50:22 回复(0)
确定D没有错???
发表于 2019-08-26 14:41:02 回复(6)
D选项应该是/[^defgh]*/吧,少了个 ^
发表于 2021-09-16 09:37:46 回复(0)
/^/ 表示以什么开始 /[^]/ 表示非
发表于 2020-04-23 21:23:34 回复(0)
d不对吧

发表于 2021-03-09 17:47:22 回复(0)
这道题真没学过。。。。看半天没看懂
发表于 2020-07-10 15:23:39 回复(0)
选项d为defgh出现0次或多次其他不做要求
发表于 2022-09-30 09:22:03 回复(0)
/[defgh]*/ *出现零次或者多次,那么会匹配到空串,匹配成功,返回true
发表于 2022-04-20 09:09:07 回复(1)
.test意思为有无匹配,仅此而已
发表于 2021-12-08 22:49:43 回复(0)
这个D想了一会,突然明白了。
/[defgh]*/
首先需要明确的是 * 可以匹配0次或多次
然后看前边的 [defgh] ,说明 * 要匹配的是 defgh 这五个字母。
整的来看,这个正则表达式所匹配的可以是 "dddd..."、 "eee.." 、"aaa..." 、 "abc" 乃至于 ""。

发表于 2021-09-24 09:34:30 回复(0)
*表示匹配0个或多个字符,也可以匹配括号内任何字符
发表于 2021-06-16 19:35:43 回复(0)
/a/可以匹配a,bac,ac,ba等等,有a就行,现在把a去掉//可以匹配任意字符串,
发表于 2020-11-25 10:53:52 回复(0)
glz头像 glz
我以为^是开头的意思
发表于 2020-05-22 16:49:33 回复(1)
D答案我就理解不了了,看评论里说abc匹配空字符串这中模式我不太懂,
发表于 2020-03-18 18:28:40 回复(2)
我试了试,d选项不对啊!!
发表于 2019-12-20 16:25:23 回复(0)