2014-12-03 3 views
2

В настоящее время я использую CKEditor, чтобы пользователь мог написать документ.
Обычно несколько пользователей имеют тенденцию начинать с нескольких пробелов и двух новых строк, а затем фактического содержимого. Скажем, пример HTML будет выглядеть примерно так:
Различные входы:Удаление пробелов, возврат каретки и ненужных тегов с использованием regexp

  • \n\n <p>&nbsp; </p>\n\n<p>&nbsp;</p>\n\n<p>This is a simple document</p>
  • <p></p>\n\n<p>&nbsp;</p>\n\n<p>Testing data</p>
  • <p></p>\n\n<p>&nbsp;</p>\n\n<p>This is my plan</p>\n\n<p>&nbsp;</p><b> Hi Hello</b>

Мне нужно, чтобы избавиться от всех нежелательных «ведущих» тегов, пробелов и возврат к перевозке только.
Вывод должен выглядеть следующим образом:

  • <p>This is a simple document</p>
  • <p>Testing data</p>
  • <p>This is my plan</p>\n\n<p>&nbsp;</p><b> Hi Hello</b>

Я попытался с помощью функции TRIM() в JavaScript, но он просто удалены ведущие пробельные. Мне не удалось удалить теги. В любом случае это может быть достигнуто в javascript с помощью RegExp?
Заранее спасибо

+3

Регулярные выражения не будет помочь тебе. Они только дадут вам больше проблем. sgml не поддается регулярным выражениям. Вместо этого вы должны использовать синтаксический анализатор dom, ходить по дереву dom и очищать узлы, которые содержат только пробелы. Кстати, у вас уже есть такой парсер в вашем браузере, поэтому вы можете использовать его в своих интересах. Поместите это содержимое в iframe (только для защиты от несбалансированного форматирования), затем пройдите по dom и удалите все с содержанием только пробела. Затем сериализуйте обратно в строку снова – Munter

+0

Не должна быть последней строкой '

Это мой план

Привет Здравствуйте'? –

+0

Я просто хочу, чтобы ведущие пробелы и ненужные теги были удалены, а не конечные/средние – Abhishek

ответ

1

Если вы уверены, что вы только собираетесь иметь p теги без каких-либо атрибутов, как в ваших примерах, то должно работать:

var strs = [ 
 
    "\n\n <p>&nbsp; </p>\n\n<p>&nbsp;</p>\n\n<p>This is a simple document</p>", 
 
    "<p></p>\n\n<p>&nbsp;</p>\n\n<p>Testing data</p>", 
 
    "<p></p>\n\n<p>&nbsp;</p>\n\n<p>This is my plan</p>\n\n<p>&nbsp;</p><b> Hi Hello</b>" 
 
]; 
 

 
var re = /^((&nbsp;)|\s|(\<p\>(&nbsp;|\s)*\<\/p\>))+/i; 
 

 
for(var i = 0; i < strs.length; i++){ 
 
    console.log('------------'); 
 
    console.log(i, strs[i].replace(re, '')); 
 
}

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

  • Нет связанных вопросов^_^