2014-06-16 6 views
-1

Я пытаюсь соответствовать словам strating с # из текстового полясоответствие слова из текстового поля

var start=/#/ig; // # Match 
var word=/#(\w+)/ig; //#abc Match 
var content=$('#text').val(); 
var go= content.match(start); //Content Matching # 
var name= content.match(word); //Content Matching #abc 

Здесь он проверяет значение в текстовой области и дает выходное слово, которое начинается с # Если есть два матча нашли это показывая два матча, но мне нужно только последний матч

+0

Удаляет ли флаг 'g'? –

ответ

1

Функция .match() возвращает массив совпадений.

Если вы хотите, чтобы выбрать последний элемент, вам нужно выбрать так:

name[name.length-1]; 
  • name.length возвращает количество элементов
  • -1, потому что ключи массива начинаются с 0, а не 1

Вот fiddle, благодаря Dave Briand

+0

вот скрипка с использованием этого http://jsfiddle.net/A5kdM/ –

+0

спасибо, что это работает – user1851420

+0

вот как я могу проверить, содержит ли текущее слово, которое я печатаю в текстовом поле, # или нет – user1851420

0

Попробуйте

content = "~test content ~thanks ok ~fine";  
strFine = content.lastIndexOf('~'); 

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

0

Как насчет этого?

var text = $('textarea').val(); // "#maxi kcdjnd dcjjncd #ijicd" 

//Find all ocurrences of words starting with # and ending in space, period or end of text 
var lastMatch = text.match(/(#.*?)(\s|$|\.)/g).pop(); 

// match returns ["maxi", "#ijicd"]. pop will get the last element 
0

Метод re match обычно возвращает массив. Чтобы получить последний матч, вы можете использовать следующее:

var name= content.match(word); 
var lastMatch = (!!name) ? name.pop() : name; 

Если нет соответствия, метод возвращает null и вы хотите быть уверены, что вы не пытаетесь манипулировать null как массив.

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