如何用正则表达式识别缺失起始&的错误HTML特殊字符
匹配缺失起始
&的无效HTML特殊字符的正则表达式 要找出那些缺少开头&的错误HTML实体(比如你示例里的quot;),可以用下面这个正则表达式:
(?<!&)(?:[a-z]+|#x?\d+);
正则拆解说明:
(?<!&):这是负向后行断言,用来确保当前匹配内容的前面没有&符号——这一步直接排除了所有格式正确的实体(比如 ),只瞄准那些漏写了开头&的错误项。(?:[a-z]+|#x?\d+):匹配实体的核心内容,覆盖两种合法实体格式:[a-z]+:匹配字母型实体名称(比如quot、nbsp)#x?\d+:匹配数字型实体,包括十进制(比如#8217)和十六进制(比如#x20AC)的格式
;:匹配实体必须的结尾分号
验证你的示例
拿你提供的HTML片段来看:
<![CDATA[<nolink>blablabla blablabla</nolink>]]>quot;
这个正则会精准匹配到末尾的quot;,而不会碰前面格式正确的 。
额外提示
如果要避免误匹配普通文本里带分号的内容(比如hello;这种无关内容),可以把[a-z]+替换成HTML标准实体名称的枚举,比如:
(?<!&)(?:(?:quot|nbsp|amp|lt|gt|hellip|mdash|ndash|rsquo|lsquo|ldquo|rdquo|apos)|#x?\d+);
这样就只会匹配标准HTML实体漏写&的情况,适配更严格的场景。
内容的提问来源于stack exchange,提问作者GigiManco
相关产品推荐
相关产品推荐

