2014-11-20 2 views
0

Добрый деньРегулярное чередование выражения не работает

Я тестирую свое регулярное выражение на сайте regex101.com. Регулярное выражение:

<button[^<]*>.*[\s\S]*<\/button>| 
<iframe[^<>]*\/>| 
<tr>[^<td>]*<\/tr> 

Test Text

<table width="30px"> 
<P>Teste</p><iframe src="teste" /><p>Test</p> 
<div><span>Teste Regex</span></div> 
<p>Test</p><button onclick="myFunction()">Click me</button> 
<table> 
<tr><td>34</td></tr>> 
</table> 

Почему только <button[^<]*>.*[\s\S]*<\/button> код соответствует? Если я очистить эту часть регулярного выражения и остаться только с этим:

<iframe[^<>]*\/>| 
<tr>[^<td>]*<\/tr> 

Только <iframe.. подобран

Почему это происходит и как я могу это исправить?

+1

Если это какой-либо вид производственной системы или имеет какую-либо ответственность за безопасность я настоятельно рекомендую вам не использовать регулярное выражение для разбора/чистый HTML - http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contains-tags –

+1

Почему вы не должны пытаться анализировать HTML с помощью регулярных выражений: http://stackoverflow.com/questions/701166/can-you- предоставить-some-examples-of-why-it-is-hard-to-parse-xml-and-html-with-a-reg – Shmiddty

+0

Пользователи приложения могут копировать и вставлять в текстовый редактор rick на нашей апликации, несколько раз пользователи выбирают весь текст со страницы и непреднамеренно копируют кнопки, javascript и т. д. Когда мы показываем на странице otjer текст, вводимый пользователями, этот текст выдает erros, потому что они содержат эти кнопки и коды iframe – tt0686

ответ

1

Вы должны удалить новые строки перед своим OR, а также установить G (глобальный флаг).

Working demo

enter image description here

Смежные вопросы