我使用以下测试字符串卡在regex101上:
我试图匹配两者之间的所有内容:recepten-zoeken /和?
我现在的尝试让我无处可去,因为我非常喜欢写正则表达式。有人想要进入芯片吗?
这就是我目前所拥有的:
(?=([^ / recepten-zoeken /])* $)
答案 0 :(得分:2)
尝试在捕获组中捕获您的值:
<强>解释强>
recepten-zoeken
按字面意思匹配\/
匹配正斜杠([^?]+)
在一个组中捕获一个否定字符类[^
,该字符组不匹配问号。 (这将包含您的价值)\?
按字面意思匹配
var s = "https://localhost:8443/site/recipes/recepten-zoeken/menugang:hoofdgerecht/soort:italiaans/seizoen:winter?Nrpp=24"
console.log(s.match(/recepten-zoeken\/([^?]+)\?/)[1])
&#13;
致ctwheels 提供摘录和评论的信用。
答案 1 :(得分:1)
使用捕获组。(()
括号表示捕获组)
捕获最后一个问号
试试这个正则表达式\/recepten-zoeken\/(.*)\?
说明: -
\/
匹配正斜杠recepten-zoeken
按字面意思匹配\/
匹配正斜杠(.*)
在一个组中捕获所有值(新行除外)到字符串中的最后一个问号(这将包含您的值)\?
按字面意思匹配
//-------------------------select upto last ? -----------------------------
str = "https://localhost:8443/site/recipes/recepten-zoeken/menugang:hoofdgerecht/soort:italiaans/seizoen:winter?Nrpp=24";
var myRegexp = /\/recepten-zoeken\/(.*)\?/;
console.log(myRegexp.exec(str)[1]);
&#13;
捕获第一个问号
试试这个正则表达式\/recepten-zoeken\/([^?]*)\?
。
说明: -
\/
匹配正斜杠recepten-zoeken
按字面意思匹配\/
匹配正斜杠([^?]*)
在一个组中捕获所有值(除了?)到字符串中的第一个问号(这将包含您的值)(这里[^?]表示匹配除?
之外的任何字符)\?
按字面意思匹配
//-------------------------select upto first ? -----------------------------
var str = "https://localhost:8443/site/recipes/recepten-zoeken/menugang:hoofdgerecht/soort:italiaans/seizoen?:winter?Nrpp=24";
var myRegexp = /\/recepten-zoeken\/([^?]*)\?/;
console.log(myRegexp.exec(str)[1]);
&#13;
答案 2 :(得分:0)
这样就可以了:
var match = url.match(/\/recepten-zoeken\/([^?]+)\?/);
// match[1] == "menugang:hoofdgerecht/soort:italiaans/seizoen:winter"
此正则表达式将匹配第一次出现/recepten-zoeken/
,然后它将开始捕获所有不是问号的字符([^?]
是一个负字符类,匹配任何不是在课堂上)。
请注意,它还会确保存在问号。如果您想支持没有问号的情况,请删除最终的\?
。
您的原始正则表达式仅匹配单个字符(.
),然后它会尝试查找不是c
,e
,k
的字符, /
或n
和z
之间。