2014-03-09 4 views
0

У меня есть несколько простых регулярных выражений, которые должны заменить @Username наREGEX Заменить текст с @ в нем

<a href="http://google.com">@Username</a> 

Хотя его получать очень странные результаты.

REGEX

var msg="@Mr.EasyBB"; 
msg.replace(/@(.+?)/g, 
'<a href=\"http://'+window.location.host+'/u=$1\">$1</a>'); 

может кто-то помочь с этим небольшим вопросом результаты выглядят как этот

<a href="http://google.com">@U</a>sername 
+1

* "Хотя его получение очень странные результаты" * Для примера? –

+0

Кажется, здесь хорошо [скрипка] (http://jsfiddle.net/AFWkd/) –

+0

Вы редактировали результат lol. Это только получение '@ U', а не' @ Username' в целом. Я думаю, мне нужно смотреть вперед до белого пространства. но не уверен, как – EasyBB

ответ

1

.+? лениво соответствие - это будет соответствовать, как несколько символов, как это возможно.

Попробуйте это. Он будет соответствовать как можно большему количеству символов без пробелов.

/@(\S+)/ 
+0

Первоначально '/ @ (\ S + \ b) /'. Сначала Сабудж Хассан получил окончательную версию, хотя оба должны работать. – sabof

+0

Спасибо, ребята. Я теперь лучше понимаю ленивых операторов: D Я думал, что ленивый продолжал идти, не останавливаясь до тех пор, пока успех, который я получаю сейчас, не станет единственным персонажем ... эти ленивые сыновья оружия: D – EasyBB

1

Попробуйте один:

msg = msg.replace(/@(\S+)/g, '<a href=\"http://'+window.location.host+'/u=$1\">@$1</a>'); 
Смежные вопросы