2013-12-04 4 views
1

Я пытаюсь извлечь год в() для данного заголовкарегулярное выражение для замены метод

Пример:

"Это 40 (2012)"

возвращается: «Это 40 "

title = mTitle.replace(/[^a-zA-Z:\s]/g, ''); 

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

year = mTitle.replace(/\D+/g, ''); 

У меня проблемы с переносом ума вокруг него.

+0

Обратная связь пожалуйста :) – leaf

ответ

4

Чтобы удалить отставая год (цифры) в круглые скобки:

> "This is 40 (2012)".replace(/\(\d+\)$/, '') 
"This is 40 " 

Чтобы также удалить пробелы до года части:

> "This is 40 (2012)".replace(/\s*\(\d+\)$/, '') 
"This is 40" 
+0

Это отлично работает. Как насчет года в круглых скобках? – MickB

+0

@MickB, я не понимаю, что вы имеете в виду. Вы хотите получить '2012' с' This is 40 (2012) '? – falsetru

+0

@MickB, Try '" Это 40 (2012) ". Match (/ \ ((\ d +) \) $ /) [1]'. Это дало вам «2004» ' – falsetru

0

Вы можете использовать один из следующих вариантов:

var year = 'This is 40 (2012)'.slice(-5, -1); 
var year = 'This is 40 (2012)'.match(/\d+(?=.$)/)[0]; 
// regex : one or more digits followed by any char + end of string 
var year = 'This is 40 (2012)'.replace(/^.*?(\d+).$/, '$1'); 
// regex : zero or more chars + one or more digits ($1) + any char 

Doc: slice, match, replace, regular expressions.

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