匹配两个字符正则表达式之间的字符串

时间:2017-06-05 18:44:04

标签: javascript regex

我需要使用new RegExp 如果两个字符之间存在特定字符串,则需要匹配,但如果字符/?之间的字符串类似,则不匹配。 即:

要匹配的字符串是:

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

我有should-ma

not应该给出任何匹配。但是should-match应该匹配 所以我需要创建new RegExp()

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

试试这个:

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

(test it out)

\/替换为起始分隔符,将\?替换为末尾分隔符。如果开头或结尾分隔符中包含.?*+^$[]\(){}|-中的任何一个,则需要在它们之前添加\,或者使用此函数为您完成工作:

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", "/", "?")一样使用。