我正在尝试使用正则表达式来显示HTML代码中的“Desired String”,任何人都可以看到我出错的地方吗?
alert("< TD>< B>< B>13COB251< /B> - Desired String< /B>< /TD>".replace(/(<[A-Z]*>)+13COB251(<\/[A-Z]*>)+ - ([a-z]*)(<\/[A-Z]*>)+/gi, "$3"))
谢谢!
答案 0 :(得分:1)
如果您将当前代码放入Regexper,则会出现以下错误:
/(&lt; [AZ]&gt;之后的第1行第22列(字节22)中的*,+,?,{,{,,(,[,。,\,$,|,)的预期之一。 )+ 13COB251(小于
您需要escape /
字符,方法是在其前加{(1 {}})反斜杠:
\
然而,正如您所看到的,这并不准确。 the best answers on StackOverflow中的一个将解释为什么不应该用正则表达式解析HTML。
答案 1 :(得分:0)
您需要转义模式中的/
字符,因为它是分隔符。
然后你需要一些量词。模式(<[A-Z]>)+
匹配一个或多个HTML标记,但仅匹配具有单个字符标记名称的HTML标记。您还需要(<[A-Z]+>)+
来匹配<TD>
标记。
所需字符串的模式也需要一个量词,并且该集需要匹配更多字符,因为所需字符串不包含小写字符。
alert("<TD><B><B>13COB251</B> - Desired String</B></TD>".replace(/(<[A-Z]+>)+13COB251(<\/[A-Z]>) - ([A-Za-z ]+)(<\/[A-Z]+>)+/gi, "$3"))
答案 2 :(得分:0)
您忘了考虑代码中的空格和所需的字符串。
/(< *[A-Z]*>)+13COB251(< *\/[A-Z]*>)+ - ([a-z ]*)(< *\/[A-Z]*>)+/gi
^ ^ ^ ^