Expression régulière pour remplacer plusieurs symboles par des balises HTML
P粉362071992
P粉362071992 2024-04-01 21:01:01
0
2
518

J'essaie de créer une expression régulière qui remplace tous les symboles "$$" par certaines balises HTML, telles que <someTag></someTag>.

J'utilise cette regex, mais elle ne couvre pas tous les cas :

$$(\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粉362071992
P粉362071992

répondre à tous(2)
P粉739886290

Ce n'est pas une solution regex, mais cela fonctionne. Description : Utilisez le délimiteur ($$) 分割字符串。然后创建一个新字符串 result 并插入数组的每个部分。然后检查当前索引是奇数还是偶数,并根据情况添加开始标记 (prefix) 或结束标记 (suffix). J'espère que ça aide!

function replaceTag(string, delimiter, prefix, suffix){
  
  let parts = string.split(delimiter);
  let result = '';
  
  for(let index = 0; index ', ''));
console.log(replaceTag('aaa $3$$ c$ $$ddd$$', '$$', '', ''));
P粉592085423

Le moyen le plus rapide est d'utiliser la méthode point à point non gourmande : /$$(.*?)$$/sg
https://regex101.com/r/upveAX/1
Utiliser dot seul sera toujours plus rapide car il ne repose pas sur des assertions ou des structures de classe,
Cela ajoute une surcharge de performances 3x.

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

console.log('aaa $3$$ c$ $$ddd$$'.replace(/$$(.*?)$$/sg, ''));
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal