3

正規表現が一致するかどうかをテストし、一致する場合は変数に割り当て、一致しない場合はデフォルト値に割り当てるために、現在次のことを行っています。

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

1行のコードでJSで同じことを行う方法があるかどうか疑問に思っていました.

明確化: 私は自分のコードを小さくしようとしているのではなく、次のように多くの変数を定義している場所をきれいにしようとしています:

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

1 に答える 1

7

OR 演算子 ( ||)を使用できます。

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

この演算子は、オペランドが true の場合は最初のオペランドを返し、そうでない場合は 2 番目のオペランドを返します。したがって、someString.match(/some_regex/gi)が偽の場合 (つまり、一致しない場合) は、['default_value']代わりに使用されます。

ただし、たとえば 2 番目のキャプチャ グループを抽出する場合、これは少しハックになる可能性があります。その場合、複数の変数を初期化しながら、これをきれいに行うことができます。

var foo = 'bar',
    foo2 = 'bar2',
    test = someString.match(/some_regex/gi),
    result = test ? test[0] : 'default_value';
于 2014-07-25T04:52:49.843 に答える