我正在尝试将正则表达式连接到 case
语句:
我基本上想匹配一个 url 是 news/asdd-asdadas-assas.aspx
我有其他匹配的 url,可以将事件类添加到导航中。网址由页面路由组成。
我一直在这样做var pathName = window.location.pathname;
var re = "/[^news][\w\W]+/";
switch (pathName) {
case "/":
$('#home-active').addClass('active');
break;
case "/about-us.aspx":
$('#about-active').addClass('active');
break;
等等..
但我想这样做:
case "/news"+re:
$('#news-active').addClass('active');
break;
我已经尝试了很多不同的正则表达式,我用 case
的方式是否正确?
我将如何通过连接 re
变量来匹配 url
最佳答案
这不是在 Javascript
中使用正则表达式的正确方法。正则表达式匹配返回真/假。这意味着在您的案例陈述中,您最终会得到类似
pathName === pathName.match(re)
转化为
pathName === true
或 pathName === false
如果 pathName
不为 null
或 undefined
,它可能实际计算,但几乎肯定不会导致您期望的行为。
编辑:它看起来像根据 this @JonathanM 提供的引用,当传递到开关的参数的计算结果为 true 或 false 时,case 语句几乎肯定不会计算。
您会考虑修改代码以使用 .match()
方法吗?
if(pathName.match(re)){
$('#home-active').addClass('active');
}else if(pathName.match(re2)){
$('#about-active').addClass('active');
}
关于javascript - 使用 Javascript 在 case 语句中打开正则表达式比较的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31030280/