<(?<nodeName>[a-zA-Z][-a-zA-Z0-9_]*)(?<attributes>(?:\s*[a-zA-Z_:!0-9,][-a-zA-Z0-9_:%."'`;(]*(?:\s*=\s*(?:(?:"[^"]*")|(?:'[^']*')|{{[^>}]*}}|[^>]+|\w*))?)*)\s*(\/?)>
上面的正则表达式试图匹配tagName和属性。
<span class='Utils.showtt("{{getI18n('zr.ratings.reviews.client.review.tag', getCrmModuleInfo('Accounts', 'true'))}}")'>
但由于输入中的引号不匹配而导致无限循环。有什么方法可以抛出错误或防止无限循环。
2条答案
按热度按时间w51jfk4q1#
尝试这个正则表达式,它将匹配整个属性,而不管引号。
wooyq4lh2#
正则表达式是错误的HTML解析工具。相反,使用DOM解析器--如
DOMParser
。请注意,您的输入字符串不是有效的HTML:属性值由第二个引号结束。该引号应在属性值的上下文中进行转义。由于您有多个单引号,因此最好用双引号将属性括起来,并对双引号进行转义。例如,输入可以是有效的,如下所示:
使用
DOMParser
的示例: