RegEx для отклонения неэкранированного символа HTML - PullRequest
1 голос
/ 01 февраля 2011

Я хочу ограничить использование неэкранированных амперсандов в определенном поле ввода. У меня возникают проблемы при получении RegEx, чтобы убить использование "&", если не следует "amp;" ... или, возможно, просто ограничить использование "&" (обратите внимание на пробел).

Я пытался адаптировать ответ в этой теме , но безрезультатно. Спасибо.

(FWIW, вот RegEx, который я сделал, чтобы убедиться, что поле имени файла не содержит ограниченные символы. Оно заканчивается на .mp3. Работает нормально, но выглядит ли оно эффективно?)

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

Ответы [ 2 ]

8 голосов
/ 01 февраля 2011

Это регулярное выражение соответствует любому вхождению &, за которым не следует amp;:

/&(?!amp;)/

Rubular

Это регулярное выражение принимает строки, содержащие символы, кроме &, или строку &amp;:

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

Rubular

Вы можете использовать и то, и другое, в зависимости от того, что наиболее удобно. Разница в том, что строка должна быть отклонена , если первое регулярное выражение совпадает, тогда как строка должна быть принята , если второе регулярное выражение соответствует.

0 голосов
/ 01 февраля 2011

Вы можете найти на /&(?!amp;)/, чтобы найти любой &, за которым не следует &.Конструкция (?!) Называется отрицательный взгляд .

Предполагается, что вы используете движок регулярных выражений, который поддерживает их, во всяком случае.Я знаю, что Perl / PCRE регулярные выражения делают.

...