2015-08-11 2 views

ответ

1

Y НУ может соответствовать текст до и после того, как во время записи page=[digits]:

s= "aaaapage=500"; 
 
document.write(s.replace(/.*(page=\d+).*/, '$1') + "<br/>"); 
 
// or with multiline input 
 
s= "a\na\naapage=500text\nnewline"; 
 
document.write(s.replace(/[\s\S]*(page=\d+)[\s\S]*/, '$1'));

Это хорошо, когда у нас есть только 1 page=[digits].

Когда мы имеем больше, используйте exec:

var re = /page=\d+/g; 
 
var str = 'apageaaaapage=500apageaaaapage=210'; 
 
var m; 
 
    
 
while ((m = re.exec(str)) !== null) { 
 
    if (m.index === re.lastIndex) { 
 
     re.lastIndex++; 
 
    } 
 
    document.write(m[0] + "<br/>"); 
 
}

+0

Обратите внимание, что я не предлагаю никаких границ слов или границ без слов, так как я не уверен, как выглядят ваши строки ввода. Я использую 'g' с' exec' для получения всех совпадений в случае, если их больше 1, это важно. –

+0

Еще один комментарий: ваши попытки не сработали, потому что 's = s.replace (/ & page = \ d/g," ");' пытался удалить '& page = [одну цифру]' из строки 's' и 's = s.replace (/ & page = [\ d] +/g," ");' пытался удалить 1 или более вхождений '& page = [1 или более цифр]' из 's'. Поскольку вы хотите сохранить 'page = digits', вы не можете сопоставить его, или, как и я, вам нужно его захватить, а затем восстановить с помощью обратной ссылки. –

0

Я просто понял,

s = s.replace(/&page=[\d]+/g,""); 

фактически работает

0

Просто удалите все слова символов, которые существуют до page=

s.replace(/\w*(page=\d+)/g,"$1"); 
Смежные вопросы