正则表达式取反的问题
这个正则怎么写可以让出现’/test’或者’/test/xxx’之类的字符串返回false?
var re = /[^\/test$]|[^\/test\/]/;
console.log(re.test('/test')); //false
console.log(re.test('/test/')); //false
console.log(re.test('/test/1')) //true ???
8 回复
找’/test’或者’/test/xxx’的反集 和 匹配它们再对结果取反是一样的吧。
re = /^\/(?:test$|test\/.)/
re.test('/test') // true
re.test('/test/') // true
re.test('/test/x') // true
再对结果取反就好了。
ps
var re = /[^/test$]|[^/test/]/;
[]中$符没有以…结尾的含义了,就是匹配i一个$,而且是字符集的任一个。 你写/[^/test$]/表示匹配的字符串仅含有 ‘t’ , ‘e’ , ‘s’ , ‘\’ , ‘$’ 时返回false。
@x-web 谢谢 ! 求个大神搭救!
在路由里,把你的函数放在route的最后处理,捡漏就可以了
@leapon 谢谢 好吧 也只能这么干了
123456
var re = !/\/test(\/[^/]*)?$/;