搜索
正则表达式用 HTML 标签替换几个符号
P粉362071992
P粉362071992 2024-04-01 21:01:01
[JavaScript讨论组]

我正在尝试构建一个正则表达式,用一些 HTML 标记替换所有符号“$$”,例如 <someTag></someTag>

我使用这个正则表达式,但它并没有涵盖所有情况:

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

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

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

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

P粉362071992
P粉362071992

全部回复(2)
P粉739886290

不是正则表达式解决方案,但它有效。说明:使用分隔符 ($$) 分割字符串。然后创建一个新字符串 result 并插入数组的每个部分。然后检查当前索引是奇数还是偶数,并根据情况添加开始标记 (prefix) 或结束标记 (suffix)。我希望这有帮助!

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

最快的方法是使用非贪婪的点全方法:/\$\$(.*?)\$\$/sg
https://regex101.com/r/upveAX/1
单独使用点总是会更快,因为它不依赖于断言或类结构,
这会增加 3 倍的性能开销。

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

console.log('aaa $$123$$ c$ $$ddd$$'.replace(/\$\$(.*?)\$\$/sg, '$1'));
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号