92028


引数 `str` で渡された文字列から `()` で括られた範囲を見つけ、その部分の文字列を返します。

  * `()` の中身が空の場合は空文字を返します。
  * `()` が複数ある場合には最初に見つかった括弧の中身を返します。(最短一致となる)
  * `()` が見つからない場合はnullを返します。

`()` の中身が空の場合は空文字を返したいのですが、nullと表示されてしまいます。  
ご教示いただけますでしょうか？

[code]

    function extractStr(str) {
      var ret = /\((.+?)\)/.exec(str);
      return ret ? ret[1] : null;
    }
    
[/code]


CC BY-SA 4.0
2022-11-06T05:17:28.977
92025
2022-11-06T06:23:10.693
2022-11-06T06:23:10.693
3060
55232
question
javascript 正規表現
かっこ内の文字の抜き出しで、結果が空の場合は空文字を返したい


> ()の中身が空の場合は空文字を返したいのですが、nullと表示されてしまいます。

正規表現は `\((.+?)\)` となっていて、括弧内は `(.+?)` と指定されています。 `+?` は1文字以上ですので、
**()の中身が空の場合** は該当せずマッチに失敗します。空でも成功してほしいなら正規表現は0文字以上を表す`*?`を使って `\((.*?)\)`
とする必要があります。


CC BY-SA 4.0
2022-11-06T06:18:00.243
92028
2022-11-06T06:18:00.243
4236
92025
answer