Сравнение глупых регулярных выражений с URL - PullRequest
0 голосов
/ 21 февраля 2019

Итак, я хочу это:

/services/auth/token

Чтобы соответствовать этому:

http://localhost:3000/services/auth/token/ трейлинг / необязательно

, но не это:

http://localhost:3000/services/auth/token/refresh

Обычно я лучше справляюсь с этим, но я немного сонный.Помогите SO !!!

РЕДАКТИРОВАТЬ:

Спасибо, СО, но я должен был сказать, что хочу сделать это с переменными, что меня смущает.Забыл добавить тег JS, мои извинения.

const myPath = '/services/auth/token';
const pathToCheck = 'http://localhost:3000/services/auth/token/';

pathToCheck.match(myPath); // doesn't work, also matches against refresh

Ответы [ 3 ]

0 голосов
/ 21 февраля 2019

Вы можете попробовать следующее:

regex = /services\/auth\/token\/?$/

Это гарантирует, что ваша строка должна заканчиваться дополнительной косой чертой после token.

0 голосов
/ 21 февраля 2019

Вы можете избежать регулярных выражений и использовать endsWith с 2 строками (одна без трейлинга / и одна с):

const myPath = '/services/auth/token';
const pathToCheck = 'http://localhost:3000/services/auth/token/';

var matched = false;

// without trailinbg slash
matched = pathToCheck.endsWith(myPath);
console.log(matched);

// with trailinbg slash
matched = pathToCheck.endsWith(myPath + '/');
console.log(matched);

IE не поддерживает некоторые методы String, такие как String.endsWith.Чтобы этот метод работал в IE, используйте:

if (!String.prototype.endsWith) {
  String.prototype.endsWith = function(suffix) {
    return this.indexOf(suffix, this.length - suffix.length) !== -1;
  };
}

Ссылка

0 голосов
/ 21 февраля 2019

Здесь должен работать простой негативный взгляд:

\/services\/auth\/token\/(?!refresh\b).*

Приведенный выше шаблон говорит, что он соответствует /services/auth/token/, при условии, что последующее не refresh.

Демонстрация

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...