#javascript #regex
#javascript #регулярное выражение
Вопрос:
var text = "pgPag.append('<li><a title="' __('First') '" href="#">amp;<amp;<</a></li>'); pgPag.append('<li><a title="' __('Previous') '" href="#">amp;<</a></li>'); pgPag.append('<li><label>amp;nbsp;' __('Page') 'amp;nbsp;</label><input type="text" size="1" /><label>amp;nbsp;</label></li>'); pgPag.append('<li><a title="' __('Next') '" href="#">amp;></a></li>'); pgPag.append('<li><a title="' __('Last') '" href="#">amp;>amp;></a></li>');";
var exp = '(?:('[a-z]*'))';
var re = new RegExp(exp,["img"]);
var match = re.exec(text);
document.write(match);
Теперь, как я могу напечатать строку, которая начинается как «__ (» например. «Первый», «Предыдущий», «Страница»
С помощью приведенного выше кода я могу получить только первую строку, т.е «Первая», а не остальные строки.
Требуемый вывод :
Первая предыдущая страница Следующая последняя
Комментарии:
1. Для начала
re.exec()
возвращает массив, но вы обрабатываете его как строку.
Ответ №1:
Есть две проблемы:
Первый: вторым аргументом new RegExp(exp,["img"]);
должна быть строка, а не массив. Поэтому:
var re = new RegExp(exp, "img");
это то, что вам нужно. Или, еще лучше:
var re = /(?:('[a-z]*'))/img // This is a regular expression literal
Второе: как сказал Майк: используйте text.match(re)
, чтобы получить массив совпадений из всей строки. re.exec
даст вам только одно совпадение за раз.
Ответ №2:
Вместо
var match = re.exec(text);
сделать
var matches = text.match(re);