javascript - 使用部分值/正则表达式进行切换?

标签 javascript pattern-matching

所以可以说我有这个开关:

switch(str){
  case "something": //a defined value
    // ...
  break;
  case /#[a-zA-Z]{1,}/ //Matches "#" followed by a letter
}

我几乎可以肯定上述内容几乎是不可能的......但是实现类似目标的最佳方法是什么?也许只是简单的 if..else..if ?那就太无聊了...

那么您将如何实现这一目标?

最佳答案

在开始切换之前,您可以获取各种模式的匹配, 并将案例设置为匹配的索引。

(其他条件即使不是更高效,也会更容易阅读。)

//var str= 'something';
var str='#somethingelse';
var M=  /^(something)|(#[a-zA-Z]+)$/.exec(str);
if(M){
    switch(M[0]){
        case M[1]:
        // ...
        alert(M[1]);
        break;
        case M[2]:
        //...
        alert(M[2])
        break;
    }
}

关于javascript - 使用部分值/正则表达式进行切换?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5601728/

相关文章:

javascript - 关闭 <脚本>

haskell - 省略 `function [] _ = ...; function _ [] = ...` 语法时模式匹配失败

r - 长转宽格式: keep row orders and use only part of row values for newly created column names

c# - VB.net 正则表达式到 C#

java - 模式搜索性能差

javascript - Safari 不使用应用程序缓存 list

javascript - PHP MySQL 插入数据库

javascript - obj 中的 prop 与 obj.hasOwnProperty(prop) 和 obj[prop] 的区别?

javascript - 循环 ID 并添加额外的 attr()

functional-programming - Case 语句和模式匹配