先上代码:if(/(\module\/(?:.+[^\.html]))/.test("./src/module/comment/comment.html")){ console.log(RegExp.$1) //module/comment/commen}if(/(\module\/(?:.+[^\.js]))/.test("./src/module/comment/comment.js")){ console.log(RegExp.$1) //module/comment/comment}从上面的输出可以看到我只是将代码中的html换成js输出就不一样了,按理说这两段代码不都是应该输出module/comment/comment吗,为何输出就不一样了?下面这段代码也是一样的问题:if(/(\module\/(?:.+[^\.html]))/.test("./src/module/comment/details.html")){ console.log(RegExp.$1) //module/comment/details}if(/(\module\/(?:.+[^\.js]))/.test("./src/module/comment/details.js")){ console.log(RegExp.$1) //module/comment/detail}不都是应该输出/module/comment/details吗?
1 回答
拉丁的传说
TA贡献1789条经验 获得超8个赞
[^]
反向匹配[^abc]
匹配非abc
一个字符/[^js]+/.test('as')
匹配到a 不会匹配s[^\.html]
匹配非 . h t m l
一个字符 比如a
,b
,e
都通过 t
不通过 并不是匹配非.html
这5个连起来的词
所以你的第一个./src/module/comment/comment.html 匹配到了t
所以匹配结束
其他的类似
添加回答
举报
0/150
提交
取消