Javascript:测试正则表达式并在一行中匹配时分配给变量

标签 javascript regex var assign code-structure

要测试正则表达式是否匹配,如果匹配则将其分配给变量,如果不匹配则将其分配给某个默认值, 我目前正在做以下事情:

var test = someString.match(/some_regex/gi);
var result = (test) ? test[0] : 'default_value';

我想知道是否有任何方法可以用一行代码在 JS 中完成同样的事情。

澄清: 我并不是要让我的代码更小,而是要在我定义多个变量的地方让它更清晰:

var foo = 'bar',
    foo2 = 'bar2',
    foo_regex = %I want just one line here to test and assign a regex evaluation result%

最佳答案

您可以使用 OR 运算符 (||):

var result = (someString.match(/some_regex/gi) || ['default_value'])[0];

如果该操作数为真,则此运算符返回其第一个操作数,否则返回其第二个操作数。因此,如果 someString.match(/some_regex/gi) 是假的(即不匹配),它将使用 ['default_value'] 代替。

不过,如果您想提取第二个捕获组,这可能会有点麻烦。在这种情况下,您仍然可以在初始化多个变量时干净地执行此操作:

var foo = 'bar',
    foo2 = 'bar2',
    test = someString.match(/some_regex/gi),
    result = test ? test[0] : 'default_value';

关于Javascript:测试正则表达式并在一行中匹配时分配给变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24948282/

相关文章:

Python: "re.match(pattern)"与 "re.search(' ^' + pattern)"之间的差异

c# - c#.Net 中 "var"关键字的意义是什么?

javascript - 方法调用模式不起作用?

regex - SQLite3 正则表达式和模式约束

javascript - workbox serviceworker 在除 Chrome : Uncaught (in promise) DOMException 之外的任何地方工作

javascript - 为什么表达匹配整个句子

C# var 有强类型吗?

javascript - Nodejs 检索变量

javascript - 使用 cheerio 和执行逻辑迭代源页面

javascript - 如何将跨度添加到不受限制的节点的所有区域