2015-06-10 3 views
1

Следующая Javascript оказывает логическое право на каждое заявление в:Javascript Regex «заканчивается» против «не заканчивается»

var reg = new RegExp(/^[\w\/].*result\b/); 

console.log(reg.test('pathtofiletest')); -> false 
console.log(reg.test('path/to/file/test')); -> false 
console.log(reg.test('/path/to/file//test/result')); -> true 
console.log(reg.test('/path/to/file/not_a_test$#%$5724')); -> false 

который является большим! Это именно то, чего я хочу. Теперь я хочу инвертировать конечный оператор. Я хочу, чтобы другие строки не заканчивались в результате, если утверждение, что завершает результат, является ложным. Но я не могу просто отрицать это утверждение. Я пробовал:

среди тонны других. Что мне не хватает?

Применение для тех любопытных

Причина, почему я спрашиваю, потому что я использую экспресс с nodejs. Я звоню

router.get('/pathstring', function (req, res, next) { 
    //code 
} 

Путь path является выражением регулярного выражения. Это не просто истина или ложь.

+0

Вы можете просто написать 'reg.test (...)'!? –

+0

нет. см. комментарий к ответу @ Загрева. – toshiomagic

+0

Я отметил ответ georg как правильный, поскольку он __is__ правильный ответ на этот конкретный вопрос. Тем не менее, он по-прежнему не работает с функциями маршрутизации Express, поэтому мне придется задать еще один вопрос, чтобы решить эту проблему. – toshiomagic

ответ

2

Что-то, как это должно работать

^(?!.*result$).*$ 

https://regex101.com/r/jO9fN6/1

+0

$ также можно заменить на \ b, если это не 1 на строку. – m0meni

+0

Это довольно солидно. Он не работает напрямую, поэтому мне придется поиграть с ним. Почему в конце после парен? – toshiomagic

1

Можете ли вы не просто отрицать результат? Как:

!reg.test('pathtofiletest') 
+1

Это не то, что я пытаюсь сделать. Я использую регулярное выражение в другом приложении, а не в действительной функции reg.test(). Я просто не хотел отталкивать профили regex от ответа, если они не знакомы с nodejs и выражают запросы на получение. – toshiomagic

+1

ОК, но логика все еще стоит. Вместо того, чтобы пытаться создать обратное регулярное выражение, почему бы просто не создать функцию, возвращающую обратный результат? Назовите функцию соответствующим образом (например, PathEndsInResult (...)). – Zagrev

+0

Логика прочная. Но опять же, это не приложение. Я уточню вопрос с приложением в конце, чтобы уточнить. – toshiomagic

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