Javascript match last @ <User> - PullRequest
       1

Javascript match last @ <User>

1 голос
/ 12 ноября 2011

Я пытаюсь сделать функцию автозаполнения для имен пользователей Twitter.

Пока у меня есть следующий код:

function OnKeyUp(txtboxid){
    var text = $('#'+txtboxid).val()
    var regex = '(^|\s)@(\w*[a-zA-Z_]+\w*)' 
    var results = text.match(RegExp(regex, 'gm'))
    console.debug(results)
}

Проблема в том, что она соответствует только текстукогда он находится в начале строки (например: @yser)

Мне нужно регулярное выражение, которое может обработать такую ​​строку, как "hello @ user2, @user и @ user3 how are you"

Я не уверен, как это сделать.Поискали в Google около 3 часов, но ничего не нашли.

Кроме того, было бы замечательно только последнее имя пользователя, когда оно изменилось.

1 Ответ

1 голос
/ 12 ноября 2011

Ваше регулярное выражение в порядке.Единственная проблема заключается в том, что обратные слеши в строке будут удаляться или заменяться при разборе строки, а не интерпретироваться анализатором регулярных выражений.Вам необходимо повторно экранировать каждый из них с помощью дополнительной обратной косой черты:

var regex = '(^|\\s)@(\\w*[a-zA-Z_]+\\w*)';

Вместо указания регулярного выражения со строкой и функции RegEx обычно следует использовать литерал регулярного выражения.Он разделяется обратными слешами вместо двойных кавычек, а в конце добавляются флаги:

var results = text.match(/(^|\s)@(\w*[a-zA-Z_]+\w*)/gm);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...