Как я сделал бы регулярное выражение для соответствия символу <
не сопровождаемый (a
или em
или strong
)
Так <hello
и <string
соответствовал бы, но <strong
не был бы.
Если ваш механизм регулярных выражений поддерживает это, используйте утверждение отрицательного просмотра вперед: это смотрит вперед в строке и преуспевает, если оно не соответствует; однако он не потребляет никаких входных данных. Таким образом, вы хотите / <(?! (?: a | em | strong) \ b) /
: сопоставить <
, затем добиться успеха, если нет a
, em
или strong
, за которым следует разрыв слова, \ b
.
Вы используете отрицательный просмотр вперед , простейшая форма которого (для этой проблемы):
<(?!a|em|strong)
Единственная проблема в том, что он игнорирует
. Чтобы справиться с этим, можно использовать \ b
, которое является выражением нулевой ширины (то есть не захватывает ни один входной сигнал), которое сопоставляет слово с переходом без слова или от слова к слову. Символы слова: [0-9a-zA-Z _]
. Итак:
<(?!(a|em|strong)\b)