РегЭкспы и JavaScript
Вопрос заключается в следующем, есть на странице кусок текста и там есть строки в кавычках, так вот, каким образом можно выделить эти строки другим цветом используя регэкспы? ввиду того, что мои познания в регэкспах невелики.. немогу понять почуму мой вариант работает неверно. Вот код:
<html>
<script>
function f1() {
var s = document.all["idText"].innerText;
s = s.replace(/(\".*\")/g, "<font color=green>$1</font>");
document.all["idText"].innerHTML = s;
}
</script>
<body>
<div id="idText">
String1 "String2" String3 "String4"
</div>
<script>f1();</script>
</body>
</html>
Этот мой вариант работает совершенно неверно. Этот вариант непонимает что такое открывающая кавычка и закрывающая, и выделяет от String2 до String4. Но как я понимаю выражение /(\".*\")/g, должно было искать последовательно, а на самом деле нет.
В регулярных выражениях есть квантификатор жадности. Он стремится захватить в результат выражения не наибольшее количество символов (как это делает обычно), а наоборот, наименьшее. В Вашем случае это должно выглядеть, я думаю, так: "/(\".*?\")/g"
Цитата:
Originally posted by Dolonet
В регулярных выражениях есть квантификатор жадности. Он стремится захватить в результат выражения не наибольшее количество символов (как это делает обычно), а наоборот, наименьшее. В Вашем случае это должно выглядеть, я думаю, так: "/(\".*?\")/g"
В регулярных выражениях есть квантификатор жадности. Он стремится захватить в результат выражения не наибольшее количество символов (как это делает обычно), а наоборот, наименьшее. В Вашем случае это должно выглядеть, я думаю, так: "/(\".*?\")/g"
БОЛЬШОЕ СПАСИБО! все работает вроде :) а вы не могли бы подсказать, где я могу найти какуюнить доку по этому?
Цитата:
Originally posted by infous
БОЛЬШОЕ СПАСИБО! все работает вроде :) а вы не могли бы подсказать, где я могу найти какуюнить доку по этому?
БОЛЬШОЕ СПАСИБО! все работает вроде :) а вы не могли бы подсказать, где я могу найти какуюнить доку по этому?
По ниже указанной ссылке описан весь синтаксис регулярных выражений для современного PHP
http://www.php.net/manual/ru/reference.pcre.pattern.syntax.php
Удачи! :)
<div id="divText">
12 bbb aaa ccc 34 aaa vvv dddd 55 aaa bbb 66
</div>
Например, мне нужно заменить два числа по две цифры с начала строки и в конце строки на что-нибуть другое. Я могу сделать следующим образом:
str = str.replace(/^\d{2}/, "DD").replace(/\d{2}\s*$/, "DD");
то есть, в первом подходе ищу в начале, а во втором в конце. А можно ли это сделать все в одном выражении???
Цитата:
Originally posted by infous
БОЛЬШОЕ СПАСИБО! все работает вроде :) а вы не могли бы подсказать, где я могу найти какуюнить доку по этому?
БОЛЬШОЕ СПАСИБО! все работает вроде :) а вы не могли бы подсказать, где я могу найти какуюнить доку по этому?
Цитата:
Originally posted by infous
Например, мне нужно заменить два числа по две цифры с начала строки и в конце строки на что-нибуть другое. Я могу сделать следующим образом:
str = str.replace(/^\d{2}/, "DD").replace(/\d{2}\s*$/, "DD");
то есть, в первом подходе ищу в начале, а во втором в конце. А можно ли это сделать все в одном выражении???
Например, мне нужно заменить два числа по две цифры с начала строки и в конце строки на что-нибуть другое. Я могу сделать следующим образом:
str = str.replace(/^\d{2}/, "DD").replace(/\d{2}\s*$/, "DD");
то есть, в первом подходе ищу в начале, а во втором в конце. А можно ли это сделать все в одном выражении???
str = str.replace(/^(\d{2})(.*)(\d{2}\s*)$/,"DD\\2DD");