2015-03-16 3 views
0

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

Рассмотрим эти строки:

my street 13a 
mystreet 3 B 
my street karlos 15A 

Как я могу вернуть эти:

my street 13 
mystreet 3 
my street karlos 15 

\d+[a-z,A-Z] соответствует случай "13а, 13а" и \d+ [a-z,A-Z] матчи его с пробелами. После этого я просто хотел бы использовать это:

myCutStr = myOriginalString.match(/\d+[a-z,A-Z]/g); 
myNewStr = myCutStr.replace(/[^\d]/g, ''); 
myOriginalString.replace(myCutStr, myNewStr); 

Но могу ли я каким-то образом объединить \d+[a-z,A-Z] и игнорировать пробелы в этом Regex? Так что этот \d+[a-z,A-Z] будет соответствовать всем моим сортам даже с пробелами?

ответ

2

Одной замены будет достаточно. То есть, замените все символы без цифр, присутствующие в конце, с пустой строкой.

string.replace(/\D+$/g, ''); 

ИЛИ

string.replace(/(\d)\D+$/g, '$1'); 

DEMO

+0

Эй, спасибо! Но в чем разница между первым и вторым? –

+0

сначала удалит все символы без цифр, присутствующие на последнем, это не будет заботиться о предыдущем символе. То есть, он удалит всю строку, если входной файл 'foo bar'. Но второй будет удалять все нецифровые символы в последней строке только в том случае, если строка содержит символ цифры в начале или посередине. –

+0

Либо я делаю что-то неправильно, либо второй удаляет последнюю цифру в строке. Первый, похоже, работает, хотя –

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