回答編集履歴
1
入れ子回数が無制限のコードを追記
    
        answer	
    CHANGED
    
    | 
         @@ -1,7 +1,25 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
             
     | 
| 
      
 1 
     | 
    
         
            +
            ### 入れ子回数が1回
         
     | 
| 
       2 
2 
     | 
    
         | 
| 
      
 3 
     | 
    
         
            +
            入れ子回数が1回限定なら、`[]` の中で `[]` を消費するパターンを作れば良いでしょう。
         
     | 
| 
      
 4 
     | 
    
         
            +
             
     | 
| 
       3 
5 
     | 
    
         
             
            ```JavaScript
         
     | 
| 
       4 
     | 
    
         
            -
            /[[^[]]*(?:[[^]]*][^[]]*)*]/
         
     | 
| 
      
 6 
     | 
    
         
            +
            console.log(/[[^[]]*(?:[[^]]*][^[]]*)*]/g.exec('aaa[ソード[炎属性]][ツインソード][ソード[水属性]]ccc')[0]); // "[ソード[炎属性]]"
         
     | 
| 
       5 
7 
     | 
    
         
             
            ```
         
     | 
| 
       6 
8 
     | 
    
         | 
| 
      
 9 
     | 
    
         
            +
            ### 入れ子回数が無制限
         
     | 
| 
      
 10 
     | 
    
         
            +
             
     | 
| 
      
 11 
     | 
    
         
            +
            入れ子が無制限の場合は、
         
     | 
| 
      
 12 
     | 
    
         
            +
             
     | 
| 
      
 13 
     | 
    
         
            +
            - `[`
         
     | 
| 
      
 14 
     | 
    
         
            +
            - `]`
         
     | 
| 
      
 15 
     | 
    
         
            +
            - `[]` 以外の文字列
         
     | 
| 
      
 16 
     | 
    
         
            +
             
     | 
| 
      
 17 
     | 
    
         
            +
            の3つに分けてマッチさせ、入れ子深度を計測しながら、文字列にマッチさせる必要があります。
         
     | 
| 
      
 18 
     | 
    
         
            +
             
     | 
| 
      
 19 
     | 
    
         
            +
            - [match-all-character-pair.js: 検索対象文字列から、指定した「開始文字」「終了文字」の対応範囲となる文字列を検索し、配列で返します](https://gist.github.com/think49/071350bcc987d82dd836885ea6f5c0d4)
         
     | 
| 
      
 20 
     | 
    
         
            +
             
     | 
| 
      
 21 
     | 
    
         
            +
            ```JavaScript
         
     | 
| 
      
 22 
     | 
    
         
            +
            matchAllCharacterPair('[a][[b]][[[c]]]', '[', ']');  // ["[a]","[[b]]","[[[c]]]"]
         
     | 
| 
      
 23 
     | 
    
         
            +
            ```
         
     | 
| 
      
 24 
     | 
    
         
            +
             
     | 
| 
       7 
25 
     | 
    
         
             
            Re: Kyun001 さん
         
     |