Совпадение строки между двумя символами регулярное выражение

1

Мне нужно использовать new RegExp Мне нужно, чтобы получить матч, если есть конкретная строка между двумя символами, но не совпадением, если это аналогичная строка между этими символами, / и ? , То есть:

Строка для соответствия:

"https://www.mysite.se/should-match?ba=11"

И я should-ma

Это not должно совпадать. Но should-match должен дать совпадение. Мне нужно создать new RegExp()

Есть идеи?

Теги:

1 ответ

0
Лучший ответ

Попробуй это:

(?!\/)[^\/\?]*(?=\?)

(проверьте его)

Замените \/ разделителем начала и \? с конечным разделителем. Если разделители начала или конца имеют любой из .?*+^$[]\(){}|- в них, вам нужно будет добавить a \ перед ними или использовать эту функцию для выполнения вашей работы:

var escape = function(str) {
    return (str+'').replace(/[.?*+^$[\]\\(){}|-]/g, "\\$&");
};

Альтернатива:

var matcher = function(str, start, end){
    var quote = function(str) {
        return (str+'').replace(/[.?*+^$[\]\\(){}|-]/g, "\\$&");
    };
    return str.match(new RegExp(quote(start) + "[^" + quote(start) + quote(end) + "]*" + quote(end)))[0].slice(1, -1)
};

Использовать как matcher("https://www.mysite.se/should-match?ba=11", "/", "?").

  • 0
    Спасибо, но мне нужно только то, что положить в new RegExp . Пожалуйста, ответьте, и я принимаю :)
  • 0
    @ user1665355 исправлено.
Показать ещё 10 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню