【发布时间】:2010-03-17 03:56:04
【问题描述】:
这个正则表达式来自 Atwood,用于过滤除 href 和标题之外的任何锚标记:
<a\shref="(\#\d+|(https?|ftp)://[-A-Za-z0-9+&@#/%?=~_|!:,.;]+)"(\stitle="[^"]+")?\s?>
我需要允许特别匹配的附加属性:target="_blank"。所以应该允许以下网址:
<a href="http://www.google.com" target="_blank">
我尝试将模式更改为这些:
<a\shref="(\#\d+|(https?|ftp)://[-A-Za-z0-9+&@#/%?=~_|!:,.;]+)"(\stitle="[^"]+")(\starget="_blank")?\s?>
<a\shref="(\#\d+|(https?|ftp)://[-A-Za-z0-9+&@#/%?=~_|!:,.;]+)"(\stitle="[^"]+")(\starget=\"_blank\")?\s?>
显然我不太了解正则表达式。应该如何调整图案以允许空白目标和没有其他目标?
【问题讨论】:
-
你不应该使用正则表达式来解析 HTML:stackoverflow.com/questions/1732348/…
-
为什么这肯定是一个有趣的答案,在所有情况下都从字面上理解它似乎有点愚蠢。我使用它是一个简单的清理程序,仅用于确保允许一些基本标签。即使 I 不是,Regex 似乎也能胜任这项任务。 ;)
标签: regex sanitization