2015-01-13 3 views
0

У меня есть строка выглядит следующим образом:jQuery/RegEx - возвращает все, кроме последнего номера?

Some:7 Stuff " x 3 " 

У меня есть следующие RegEx:

/(\d+)(?!.*\d)/g 

Это правильно захватывает 3 из строки, но мне нужно, чтобы захватить все остальное так что я возможно .replace() It. Мне, по сути, нужно обратное, но как мне это сделать?

Я хочу ТОЛЬКО 3 оставаться после запуска .replace(). В настоящее время он удаляет 3.

EDIT: Релевантный код here.

+0

Каков ожидаемый выход? – hwnd

+0

Итак, вы хотите получить два совпадения 'Some: 7 Stuff 'x' и '' '? –

+0

Я хочу заменить все, НО 3 в моей строке. Я хочу, чтобы 3 возвращался после замены на нем. – Thirk

ответ

1

Почему вы не пытались match, а не заменить?

'Some:7 Stuff " x 3 "'.match(/(\d+)(?=[^\d]*$)/).pop(); //3 

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

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

+0

Поскользнулся полностью! Решил мою проблему: 'match (/ (\ d +) (?!. * \ D)/g, '$ 1')' Спасибо! – Thirk

+0

@Thirk Я рад, что смогу помочь. Однако обратите внимание, что совпадение не принимает 2 аргумента. Кроме того, глобальный флаг не требуется. – plalx

0

Это должно соответствовать вашим ожиданиям:

var str = 'Some:7 Stuff " x 3 "'; 
console.log(str.replace(/^.*?(\d+)[^\d]*$/, '$1')); 
+0

Не уверен, что я делаю неправильно, но работает '$ (elemthree, this) .text(). Replace (/^.*? (\ D +) [^ \ d] * $ /, '$ 1')', возвращается 'Некоторые: 7 Предмет x 3' Только удаление котировок. – Thirk

+0

Вы пытаетесь изменить текст внутри элемента? – Phylogenesis

+0

Нет, я беру данные, чтобы помещать внутри массива. Вот соответствующий код: https://gist.github.com/n4ru/f899e15ac977d662a321 – Thirk

0

Использование регулярных выражений замены:

'Some:7 Stuff " x 3 "'.replace(/(\d+)(?!.*\d)/g, "NEW_VALUE"); 
// gets "Some:7 Stuff " x NEW_VALUE ""