2013-04-17 2 views
0

У меня возникла проблема с javascript RegExp. Я хочу заменить значение a.href значением textbox, когда я нажимаю кнопку. Но я не хочу заменять всю строку, просто хочу найти и заменить, которые точно соответствуют моему RegExp. Вот мой кодстрока javascript заменить на RegExp

$(document).ready(function(){ 
    $('#btnRun').click(function(){ 
     var str = encodeURIComponent($('#mydata').val()); 
     var regExp = new RegExp('\\b' +encodeURIComponent($('a').html()) + '\\b','gi'); 
     $('a').attr('href',$('a').attr('href').replace(regExp,str)); 
    }); 
}); 

это мой тестовый код http://jsfiddle.net/4uAp5/1/

ответ

2

Не думаю, что вам нужно регулярное выражение, чтобы сделать это. Этот код должен выполнить то, что вы описываете:

$('a').attr('href',$("#mydata").val()); 

Также стоит отметить, что, как вы ориентируетесь по ссылке - $('a') - подберет каждый ссылку на страницу ...

+1

Это будет заменить весь 'значение href', но он, видимо, только хочет заменить совпадающую часть. –

1

\\b не поскольку значение href кодируется и выводится (в этом конкретном примере) в cMyTest1. c не удовлетворяет \\b. В зависимости от конкретных обстоятельств существует множество решений. Один из них заключается в том, чтобы использовать decodeURI на href перед использованием регулярного выражения, а затем кодировать его позже (хотя, вероятно, это и не нужно).

http://jsfiddle.net/4uAp5/4/

+0

Как я протестировал, есть некоторые проблемы с символом Юникода, такие как китайский символ. – kst

Смежные вопросы