Когда вы поместите ++
после в переменную, она получает приращение после назначения. Вы также можете поместить ++
перед в переменную, и она будет увеличена до присвоения.
Javascript действительно ведет себя точно ] так же, как PHP для приращения префикса и постфикса.
Попытка проанализировать HTML с регулярными выражениями обычно является чрезвычайно плохой идеей. Используйте синтаксический анализатор вместо этого, должно быть одно доступное для Вашего выбранного языка.
Вы смогли сходить с рук что-то вроде этого:
</?tag[^>]*?>
Но это зависит от точно, что Вы делаете. Например, это не удалит содержание тега, и оно может оставить Ваш HTML в недопустимом состоянии, в зависимости от которого тега Вы пытаетесь удалить. Это также справляется плохо с недопустимым HTML (и существует многое из этого о).
Используйте синтаксический анализатор вместо этого :)
Я думаю, что существует некоторый серьезный anti-regex фанатизм, происходящий здесь. Существует много времен, когда можно хотеть разделить конкретный тег из некоторой разметки, когда не имеет смысла использовать полноценный синтаксический анализатор.
Конечно, существуют времена, когда синтаксический анализатор мог бы быть наилучшим вариантом, но если Вы ищете regex затем:
<script[^>]*?>[\s\S]*?<\/script>
Это удалило бы теги script и их содержание. Удостоверьтесь, что Вы используете нечувствительное к регистру соответствие.
Если Вы не хотите удалять содержание тега затем, можно использовать:
<\/?script[^>]*?>
Пример использования в JavaScript был бы:
function stripScripts(markup) {
return markup.replace(/<script[^>]*?>[\s\S]*?<\/script>/gi, '');
}
var safeText = stripScripts(textarea.value);
Я думаю, что это мог бы быть Raymond Chen (blogs.msdn.com/oldnewthing), который я перефразирую (плохо!) здесь... Но, Вы хотите Регулярное выражение? "Теперь у Вас есть две проблемы"...:=)
Если строка правильно построена (X) HTML, Вы могли бы загрузить его в синтаксический анализатор (HTML/XML) и использовать это для удаления каких-либо узлов незаконного разнообразия? Если это не правильно построено, то это становится немного более хитрым, но, я подозреваю, что RegEx не является лучшим способом пойти об этом...
Существует только Слишком много способов, которыми единственный тег может появиться, не говоря уже о кодировке, вариантах, и т.д.
Я настоятельно рекомендую, чтобы Вы заново продумали этот подход.... Вам действительно не придется обрабатывать HTML непосредственно, так или иначе.
Первое, что пришло на ум я сказал бы, что это запустит Вас в правильном направлении.
s/<TAG[^>]*>([^<]*)</TAG[^>]*>/\1
В основном найдите стартовый тег, любой текст промежуточный теги и затем завершающий тэг. Замените все это тем, что было промежуточным теги.
Исправленный ответ:
</?TAG\b[^>]*?>
Поскольку ответ Dans удалил бы <br />
, но Вы хотите только <b>
Вот regex, который я записал с этой целью, он работает еще в нескольких ситуациях:
</?(?(?=b|img|a|script)notag|[a-zA-Z0-9]+)(?:\s[a-zA-Z0-9\-]+=?(?:(["",']?).*?\1?)?)*\s*/?>
При использовании регулярных выражений для синтаксический анализ HTML обычно не одобряется или игнорируется, вы почти наверняка не захотите писать свой собственный синтаксический анализатор.
Однако вы можете использовать некоторые встроенные или библиотечные функции для достижения того, что вам нужно.
getElementsByTagName
и getElementById
, не говоря уже о jQuery .