Jquery, чтобы найти имя на HTML-странице и добавить гиперссылку - PullRequest
1 голос
/ 21 апреля 2010

Вот мой пример: У меня есть веб-сайт, который содержит следующее:

<body>
Jim Nebraska zipcode 65437
Tony lives in California his zipcode is 98708
</body>

Я бы хотел иметь возможность искать почтовые индексы на странице и оборачивать их гиперссылками, такими как:

<body>
Jim Nebraska zipcode <a href="/65437.htm">65437</a>
Tony lives in California his zipcode is <a href="/65437.htm">98708</a>
</body>

Могу ли я использовать селектор регулярных выражений, чтобы найти строку и затем обернуть строку, или заменить ее новой гиперссылкой?

Я новичок в Jquery и ищу человека, который укажет мне правильное направление.

Спасибо,

Mike

Ответы [ 2 ]

2 голосов
/ 21 апреля 2010

это в основном то же самое, что и маму, и Джим написал

незначительные модификации выражения и использование функции вместо $ 1 по какой-то причине с firebug я получаю сообщение об ошибке, пытаясь использовать $ 1

var s = "Jim Nebraska zipcode 65437\nTony lives in California his zipcode is 98708";
// var s = "12345 should be but not this 22 or this 9999999 here is a zip 44444, and then some more content and another one 34366 and so on";
var result = s.replace(/(\b\d{5}-\d{4}\b)|(\b\d{5}\b)/g, function (thisMatch) {
  return "<a href='/" + thisMatch + ".htm'>";
});

это все равно не будет работать, если оставить только 5-значный адрес улицы, то есть 12345 Main St. будет заканчиваться ссылкой на 12345

ОБНОВЛЕНИЕ: изменено регулярное выражение, чтобы избежать жадного обращения с 9999999

from: /(\d{5}-\d{4})|(\d{5})/g
to:   /(\b\d{5}-\d{4}\b)|(\b\d{5}\b)/g

, кажется, оставляет 9999999 в покое, как хотелось бы

2 голосов
/ 21 апреля 2010

Вы можете использовать метод замены в html:

$('body').html().replace(/\s(65437)\s/g, '<a href=...' + $1 + '</a>');

ОБНОВЛЕНИЕ: очевидно, этот пример ищет только один конкретный почтовый индекс, но вы можете адаптировать инструкцию, используя массив почтовых индексов и выполнив заменуза каждый код.

...