регулярное выражение php в javascript - PullRequest
0 голосов
/ 11 октября 2009
Строка

может быть чем угодно. @Username - ссылка в многострочной строке. Нам нужно связать @username в любом месте URL-адреса. Так же, как twitter

        $text = preg_replace('!(^|\W)@(([a-z0-9]+(\.?[-_a-z0-9]+)*)+)!', '\\1<a href="http://$2.'.site::$domain_only.'">@$2</a>', $text);

это моя версия php .. как я могу конвертировать или использовать то же самое с javascript.

Ответы [ 2 ]

1 голос
/ 11 октября 2009

Вы можете конвертировать код почти один на один:

text = text.replace(/@+([a-z0-9]+(\.?[-_a-z0-9]+)*){2,255}/g, "<a href='http://$0.".site::$domain_only."'/>$0</a>");
text = text.replace("='http://@", "='http://");

И вам нужно будет заменить site::$domain_only на его значение, например ::

var domain_only = '…';
text = text.replace(/@+([a-z0-9]+(\.?[-_a-z0-9]+)*){2,255}/g, "<a href='http://$0."+domain_only+"'/>$0</a>");
text = text.replace("='http://@", "='http://");

Но я бы лучше использовал это регулярное выражение:

/@+((?:[a-z0-9]+(?:\.?[-_a-z0-9]+)*){2,255})/g

Тогда вы можете использовать матч первой группы напрямую, и вам не нужно удалять @ впоследствии:

var domain_only = '…';
text = text.replace(/@+((?:[a-z0-9]+(?:\.?[-_a-z0-9]+)*){2,255})/g, "<a href='http://$1."+domain_only+"'/>$1</a>");
0 голосов
/ 11 октября 2009

Также вы можете добавить нужные методы к объекту JavaScript String, например

String.prototype.linkuser=function(){
    return this.replace(/[@]+[A-Za-z0-9-_]+/g,function(u){
        return u.link('http://'+u.slice(1).toLowerCase()+'.example.com/');
    });
};

А потом просто используйте его как

// var username = "RT @some0ne this isn't a @twitterUsername";
username.linkuser(); // RT <a href="http://some0ne.example.com/">@some0ne</a> this isn't a <a href="http://twitterUsername.example.com/">@twitterUsername</a>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...