[英]JavaScript Regular Expression .replace usage
我正在尝试使用正则表达式仅显示HTML代码中的“所需字符串”,有人可以看到我要去哪里了吗?
alert("< TD>< B>< B>13COB251< /B> - Desired String< /B>< /TD>".replace(/(<[A-Z]*>)+13COB251(<\/[A-Z]*>)+ - ([a-z]*)(<\/[A-Z]*>)+/gi, "$3"))
谢谢!
如果您通过Regexper输入当前代码,则会出现以下错误:
预期* / +,?,{,{,(,[,。,\\,$,| ,,)在/(<[AZ]>)+ 13COB251(<
您需要通过在反斜杠前加上一个反斜杠( \\
)来转义 /
字符:
/(<[A-Z]>)+13COB251(<\/[A-Z]>)+ - ([a-z])(<\/[A-Z]>)+/gi
但是,正如您所看到的,这并不是很准确。 关于StackOverflow的最佳答案之一将解释为什么不应该使用正则表达式解析HTML。
您需要转义模式中的/
字符,因为这是分隔符。
然后,您需要更多的量词。 模式(<[AZ]>)+
匹配一个或多个HTML标签,但仅匹配具有单个字符标签名称的HTML标签。 您还需要(<[AZ]+>)+
来匹配<TD>
标签。
所需字符串的模式也需要一个量词,并且该集合需要匹配更多字符,因为所需字符串不只包含小写字符。
alert("<TD><B><B>13COB251</B> - Desired String</B></TD>".replace(/(<[A-Z]+>)+13COB251(<\/[A-Z]>) - ([A-Za-z ]+)(<\/[A-Z]+>)+/gi, "$3"))
演示: http : //jsfiddle.net/RH6zc/
您忘记考虑标签内和所需字符串中的空格。
/(< *[A-Z]*>)+13COB251(< *\/[A-Z]*>)+ - ([a-z ]*)(< *\/[A-Z]*>)+/gi
^ ^ ^ ^
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.