我使用.replace
JavaScript方法替换字符串中的<b>
,<u>
和<i>
标记。
var $text = 'This is some <b><u><i>bold underlined italic text</i></u></b>';
$text.replace(new RegExp('<(/?)b><(/?)u><(/?)i>','gmi'), '<div>').replace(new RegExp('<(/?)i><(/?)u><(/?)b>','gmi'), '</div>');
然而,这并不理想,因为只有标签按此顺序才有效。如果我的字符串是
,它将无法工作var $text = 'This is some <i><b><u>bold underlined italic text</u></b></i>';
我可以使用哪种方法允许这三种标签的任意组合?
感谢您的帮助。
答案 0 :(得分:2)
为什么不创建三个RegExp,然后只创建$text.replace(regex1,'foo').replace(regex2,'foo').replace(regex3,'foo')
你的regex1 ... 3只包含一个标签
虽然这是愚蠢的方法,但也是最简单的方法,易于理解,其他的可能是使用|所有这些标签之间的正则表达式中的量化器 编辑这会产生foo的三倍,这是你不想要的。
$regexp = new RegExp('(<(/?)b>)|(<(/?)u>)|(<(/?)i>)','gmi');
编辑这个选项最适合你,根据@Vbyec你可以用更好更短的方式写这个
$regexp = new RegExp('(<\/?(u|i|b)>)+','gmi')
答案 1 :(得分:1)
您需要删除所有 b,u,i 标记吗?
$text.replace(/(<\/?(u|i|b)>)/gmi,"")