Rumah  >  Soal Jawab  >  teks badan

Ungkapan biasa untuk menggantikan beberapa simbol dengan tag HTML

Saya cuba membina ungkapan biasa yang menggantikan semua simbol "$$" dengan beberapa teg HTML, seperti <someTag></someTag>.

Saya menggunakan regex ini, tetapi ia tidak meliputi semua kes:

$$(\S[^\*]+\S)$$
'aaa $3$$ c$ ddd'.replace(/$$(\S[^\*]+\S)$$/g, '<a1></a1>') // works

'aaa $3$$ c$ $$ddd$$'.replace(/$$(\S[^\*]+\S)$$/g, '<a1></a1>') // doesn't work, should be 'aaa <a1>123</a1> c$ <a1>ddd</a1>'

console.log('aaa $3$$ c$ ddd'.replace(/$$(\S[^\*]+\S)$$/g, '<a1></a1>')) // works

console.log('aaa $3$$ c$ $$ddd$$'.replace(/$$(\S[^\*]+\S)$$/g, '<a1></a1>')) // doesn't work, should be 'aaa <a1>123</a1> c$ <a1>ddd</a1>'

P粉362071992P粉362071992183 hari yang lalu377

membalas semua(2)saya akan balas

  • P粉739886290

    P粉7398862902024-04-02 13:41:43

    Bukan penyelesaian regex, tetapi ia berkesan. Penerangan: Gunakan pembatas ($$) 分割字符串。然后创建一个新字符串 result 并插入数组的每个部分。然后检查当前索引是奇数还是偶数,并根据情况添加开始标记 (prefix) 或结束标记 (suffix). Saya harap ini dapat membantu!

    function replaceTag(string, delimiter, prefix, suffix){
      
      let parts = string.split(delimiter);
      let result = '';
      
      for(let index = 0; index < parts.length; index++){
      
        result += parts[index];
      
        if(index % 2 == 0 && index < parts.length - 1){
        
          result += prefix;
        
        }
        else if(index < parts.length - 1){
        
          result += suffix;
        
        }
      
      }
      
      return result;
    
    }
    
    console.log(replaceTag('aaa $3$$ c$ ddd', '$$', '', ''));
    console.log(replaceTag('aaa $3$$ c$ $$ddd$$', '$$', '', ''));

    balas
    0
  • P粉592085423

    P粉5920854232024-04-02 09:46:01

    Cara terpantas adalah dengan menggunakan kaedah point-to-point yang tidak tamak: /$$(.*?)$$/sg
    https://regex101.com/r/upveAX/1
    Menggunakan titik sahaja akan sentiasa lebih pantas kerana ia tidak bergantung pada penegasan atau struktur kelas,
    Ini menambah overhed prestasi 3x.

    console.log('aaa $3$$ c$ ddd'.replace(/$$(.*?)$$/sg, ''));
    
    console.log('aaa $3$$ c$ $$ddd$$'.replace(/$$(.*?)$$/sg, ''));

    balas
    0
  • Batalbalas