如果里面的字符串部分匹配某些条件,我试图替换字体颜色。
的例子:
var font_str = "<FONT color='red'>aaa-1/2</br>bbb-1/3</br>aaa-1/20</FONT>"
var match = 'aaa'
如果-x/x之后的单词与匹配字符串相同,我想用黑色字体标记
替换</br>
之前的整个单词我试图使用.replace()
和RegExp()
,但仍然不知道如何实现我想要的。
font_str.replace(new RegExp(match, "g"), "<FONT face='monospace' color='black'>" + match + "</FONT>")
结果:
var font_str = '<FONT color='red'><FONT color='black'>aaa</FONT>-1/2</br>bbb-1/3</br><FONT color='black'>aaa</FONT>-1/20</FONT>'
输出应该是:
var font_str = "<FONT color='red'><FONT color='black'>aaa-1/2</FONT></br>bbb-1/3</br><FONT color='black'>aaa-1/20</FONT></FONT>"
可以使用
font_str.replace(
new RegExp(match.replace(/[-\^$*+?.()|[]{}]/g, '\$&') + "(?=[^<]*</?br\s*/?>)", "g"),
"<FONT face='monospace' color='black'>$&</FONT>"
)
参见regex演示。
细节:
- 查看JavaScript中是否有RegExp.escape函数?,这将转义
match
值 - 查看正则表达式演示。
(?=[^<]*</?brs*/?>)
是正向正向的,除了<
+<
+一个可选的/
+br
+零或多个空格+一个可选的/
+>
之外,它需要零或多个字符。
替换中的$&
是匹配的match
值(当您运行不区分大小写的regex搜索时特别有用)。