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

Yem*_*lat 2 javascript regex var code-structure assign

要测试正则表达式是否匹配并将其分配给变量(如果不匹配),或者将其分配给某个默认值(如果不匹配),我目前正在执行以下操作:

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

我想知道是否有任何方法可以在JS中使用一行代码执行相同的操作.

澄清:我并不是想让我的代码更小,而是在我定义一些变量的地方使它变得更清晰:

var foo = 'bar',
    foo2 = 'bar2',
    foo_regex = %I want just one line here to test and assign a regex evaluation result%
Run Code Online (Sandbox Code Playgroud)

Doo*_*nob 6

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

var result = (someString.match(/some_regex/gi) || ['default_value'])[0];
Run Code Online (Sandbox Code Playgroud)

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

例如,如果你想提取第二个捕获组,这可能会有点hacky.在这种情况下,您仍然可以在初始化多个变量时干净利落地执行此操作:

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