Регулярное выражение для поиска строк, не заканчивающихся определенной подстрокой.
Помогите пожалуйста составить регулярное выражение, которое находило бы строки, которые не заканчиваются на ".pdf" .
То есть, чтобы находились строки вида "some string" и "some stringpdf", но не находились строки вида "some string.pdf" |
sutok85,
var a = "some string",b = "some stringpdf",c = "some string.pdf" alert([!/\.pdf$/.test(a),!/\.pdf$/.test(b),!/\.pdf$/.test(c)]); |
sutok85,
Приведите примеры для пары входных строк -> и выходных |
var re = /(?:[\s\S]*\.pdf|([\s\S]*))$/i;
var lines = [
'some string',
'some stringpdf',
'some string.pdf',
'some string.PDF'
];
for(var i = 0; i < lines.length; i++) {
alert(re.exec(lines[i])[1]);
}
|
Зачем тут регулярные выражения?
"some string.pdf".slice( -4 ) != ".pdf" "some string".slice( -4 ) != ".pdf" |
Нужна именно регулярка. Специфика задачи.
devote - спасибо, посмотрю и эту регулярку. Кому интересно, вот такое решение есть:
var r = /^(?!.*\.pdf$).*/;
console.log(r.test("some string")); //true
console.log(r.test("some stringpdf")); //true
console.log(r.test("some string.pdf")); //false
console.log(r.test("some string.pdfs")); //true
|
sutok85,
учитывая что тебе нужно получить true|false то собственно и правда накой черт рега? она ведь медленнее работает. |
devote
Абсолютно согласен, без регулярки можно вполне обойтись здесь. Но есть CMS-ка, которая принимает в качестве настроек регулярку js для парсинга и отбраковки url. Как-то так :) |
| Часовой пояс GMT +3, время: 11:12. |