Я использую регулярные выражения, чтобы сделать базовое преобразование кода разметки wiki в текстовый текст с возможностью копирования, и я использую javascript для выполнения работы.Javascript Regex заменяет только первое совпадение
Однако механизм регулярных выражений javascript отличается от тех, которые я использовал ранее, а также регулярного выражения в Notepad ++, которое я использую ежедневно.
Для ПРИМЕР- данной тестовой строки:
==Section Header==
===Subsection 1===
# Content begins here.
## Content continues here.
Я хочу закончить с:
Section Header
Subsection 1
# Content begins here.
## Content continues here.
Просто удалите все равно знаки.
Я начал с установкой регулярного выражения:
var reg_titles = /(^)(=+)(.+)(=+)/
Это регулярного выражением для поиска строк, которые начинаются с одной или более равным с другим набором из одного или нескольких равных. Rubular показывает, что он точно соответствует моим строкам и не улавливает равные знаки в середине круга. http://www.rubular.com/r/46PrkPx8OB
Код для замены строки на основе регулярных выражений
var lines = $('.tb_in').val().split('\n'); //use jquery to grab text in a textarea, and split into an array of lines based on the \n
for(var i = 0;i < lines.length;i++){
line_temp = lines[i].replace(reg_titles, "");
lines[i] = line_temp; //replace line with temp
}
$('.tb_out').val(lines.join("\n")); //rejoin and print result
Мой результат, к сожалению:
Section Header==
Subsection 1===
# Content begins here.
## Content continues here.
Я не могу понять, почему регулярное выражение заменить функцию, когда он находит несколько матчей, кажется, чтобы заменить только первый экземпляр, который он находит, а не все экземпляры.
Даже когда мое регулярное выражение обновлена: вар reg_titles =/(= {2,})/
"Найдите два или более равные", выход по-прежнему идентичен. Он делает единственную замену и игнорирует все остальные совпадения.
Режиссер-оператор регулярного выражения не ведет себя таким образом для меня. Запуск такой же замены несколько раз не влияет.
Любые советы о том, как заставить мою строку заменить функцию, чтобы заменить ВСЕ экземпляры совпадающего регулярного выражения, а не только первого?
вы, вероятно, не используя 'G' флаг выполнить несколько (глобальный) соответствует – vol7ron