RegEx拒绝未转义的HTML字符

时间:2011-01-31 23:12:32

标签: html xml regex escaping ampersand

我想限制在特定输入字段中使用未转义的&符号。我无法使用RegEx来杀死“&”的使用除非后面跟“amp;”......或者只是限制使用“&”(注意空格)。

我试图调整答案in this thread,但无济于事。感谢。

(FWIW,这是一个RegEx,我确保文件名字段不包含重写的字符。并以.mp3结尾。它工作正常,但它看起来效率高吗?)

^[^&,<,>,:,",/,\\,|,?,\*]+(\.mp3|\.MP3|\.Mp3|\.mP3)$

2 个答案:

答案 0 :(得分:8)

此正则表达式匹配&后面没有amp;的任何事件:

/&(?!amp;)/

Rubular

此正则表达式接受包含&以外的字符或字符串&amp;的字符串:

/^([^&]|&amp;)*$/

Rubular

您可以使用其中一种,具体取决于哪种方式最方便。不同之处在于,如果第一个正则表达式匹配,则字符串应被拒绝,而如果第二个正则表达式匹配,则字符串应接受

答案 1 :(得分:0)

您可以在/&(?!amp;)/上进行匹配,找到任何&amp;'后面跟&amp; amp。 (?!)构造称为negative lookahead

假设您正在使用支持它们的正则表达式引擎,无论如何。我知道Perl / PCRE正则表达式。