我正在尝试对以下字符串原型(prototype)进行替换:“I‘m singing & dance in the rain.”
以下正则表达式与实例正确匹配,但也捕获 &
实例后面的字符。 "(&)[#?a-zA-Z0-9;]"
从上述原型(prototype)中捕获以下字符串:"&l"
。
如何限制它只捕获 &
?
编辑:我应该补充一点,我不想单独匹配 "&"
。
最佳答案
查找(这涉及命名、十进制和十六进制实体):
&([A-Za-z]+|#x[\dA-Fa-f]+|#\d+);
替换为
&$1;
请注意:这很可能会出错。我建议使用 HTML 解析器来解码文本。如果它是双重编码的,您可以对其进行两次解码。即使在小规模上,HTML 和正则表达式也不能很好地协同工作。
既然您使用的是 JavaScript,我希望您使用的是浏览器。如果是的话,那么您手中就有了一个不错的 DOM 解析器。创建一个新元素,将字符串分配给其内部 HTML 属性并读出文本值。完成。
关于javascript - 正则表达式匹配 &entity;或 �-9;并捕获&,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1764478/