javascript - 使用 Javascript 在 case 语句中打开正则表达式比较的结果

标签 javascript regex switch-statement

我正在尝试将正则表达式连接到 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 === truepathName === false

如果 pathName 不为 nullundefined,它可能实际计算,但几乎肯定不会导致您期望的行为。

编辑:它看起来像根据 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/

相关文章:

javascript - 比较对象数组 : Ramda way

java - 是否可以同时使用 $all 和 $regex ?

regex - 删除制表符 - perl

javascript - 根据当前路线突出显示选项卡

javascript - 为多个页面上的导航栏创建可重用的 html

javascript - Quickblox 一对一聊天记录不起作用

javascript - 正则表达式中的/是什么意思?

javascript - 罗马数字开关盒无法正确评估

list - 如何将 switch 中的变量与列表的内容匹配?

java - 带有构造函数的枚举并在 switch JAVA 中使用它