Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/479.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript:测试正则表达式并将其分配给变量(如果它在一行中匹配)_Javascript_Regex_Var_Assign_Code Structure - Fatal编程技术网

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

Javascript:测试正则表达式并将其分配给变量(如果它在一行中匹配),javascript,regex,var,assign,code-structure,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 =

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

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运算符(
|
):

如果第一个操作数为truthy,则此运算符返回该操作数,否则返回第二个操作数。因此,如果
someString.match(/some\u regex/gi)
是falsy(即不匹配),它将使用
['default\u value']

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

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

确切地非常感谢,我已经在使用
|
做类似的事情,但我从未想过将“默认值”放入数组,这是一个很好的技巧@YemSalat很乐意帮忙!我还添加了另一个解决方案,因为如果你想抓取捕获组或其他东西,这可能会有点笨拙。尽管当我想从正则表达式中抓取组匹配时,这看起来有点“黑客”<代码>变量结果=(someString.match(/some_regex/gi)| |[,'default_value'])[1];//“默认值”前面的逗号[更新]耶...)再次感谢!
var foo = 'bar',
    foo2 = 'bar2',
    test = someString.match(/some_regex/gi),
    result = test ? test[0] : 'default_value';