#javascript #regex #twitter
#javascript #регулярное выражение #Twitter
Вопрос:
Я пытаюсь создать функцию автозаполнения для имен пользователей 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)
Что я хочу, так это регулярное выражение, которое может отображать такую строку, как эта «привет @user2, @user и @ user3, как дела»
Я не уверен, как этого добиться. Искал в Google около 3 часов и все еще ничего не нашел.
Кроме того, было бы здорово указывать только последнее имя пользователя при его изменении.
Ответ №1:
Ваше регулярное выражение в порядке. Единственная проблема заключается в том, что обратная косая черта в строке будет удалена или заменена при анализе строки, вместо того, чтобы интерпретироваться анализатором регулярных выражений. Вам нужно повторно экранировать каждое из них дополнительной обратной косой чертой:
var regex = '(^|\s)@(\w*[a-zA-Z_] \w*)';
Вместо указания регулярного выражения с помощью строки и RegEx
функции обычно следует использовать литерал регулярного выражения. Оно разделено обратной косой чертой вместо двойных кавычек, с добавлением флагов в конце:
var results = text.match(/(^|s)@(w*[a-zA-Z_] w*)/gm);