var myregexp = /<br\s*\/>((?:(?!<br\s*\/>).)*)$/;
var match = myregexp.exec(subject);
if (match != null) {
result = match[1];
} else {
result = "";
}
Пояснение:
<br\s*/> # match <br /> with optional space
( # capture the following:
(?: # repeat the following, but don't capture (because the outer parens do so already)
(?!<br\s*/>) # assert that it's impossible to match <br />
. # if so, match any character
)* # do this as many times as necessary...
) # (end of capturing group)
$ # ...until the end of the string.
Итак, сначала мы пытаемся сопоставить <br/>
или <br />
и т. Д. Если это не удастся, совпадение не удастся. Если нет, то мы фиксируем каждый следующий символ до конца строки , если только не будет соответствовать другому <br/>
по пути. Это гарантирует, что мы действительно сопоставляем с последнего <br/>
и далее. Результат будет в обратной ссылке nr. 1 (который может быть пустым, если после последнего <br/>
ничего нет).