Javascript 将在关键字之后和问号之前匹配的正则表达式
我在regex101上遇到了以下测试字符串: 我正在尝试匹配中间的所有内容:recepten zoeken/和 我目前的尝试让我一事无成,因为我是编写正则表达式的新手。有人想插手吗 这就是我目前拥有的:Javascript 将在关键字之后和问号之前匹配的正则表达式,javascript,regex,between,Javascript,Regex,Between,我在regex101上遇到了以下测试字符串: 我正在尝试匹配中间的所有内容:recepten zoeken/和 我目前的尝试让我一事无成,因为我是编写正则表达式的新手。有人想插手吗 这就是我目前拥有的: .(?=([^/recepten zoeken/]?)*$)尝试在捕获组中捕获您的值: 解释 recepten zoeken \/匹配正斜杠 ([^?]+)在组中捕获一个不匹配问号的否定字符类[^。(这将包含您的值) \?逐字匹配 var s=”https://localhost:84
.(?=([^/recepten zoeken/]?)*$)尝试在捕获组中捕获您的值: 解释
recepten zoeken
匹配正斜杠\/
在组中捕获一个不匹配问号的否定字符类([^?]+)
。(这将包含您的值)[^
逐字匹配\?
var s=”https://localhost:8443/site/recipes/recepten-zoeken/menugang:hoofdgerecht/soort:italiaans/Seashoen:winter?Nrpp=24“
console.log(s.match(/recepten zoeken\/([^?]+)\?/)[1])
尝试在捕获组中捕获您的值:
解释
recepten zoeken
匹配正斜杠\/
在组中捕获一个不匹配问号的否定字符类([^?]+)
。(这将包含您的值)[^
逐字匹配\?
var s=”https://localhost:8443/site/recipes/recepten-zoeken/menugang:hoofdgerecht/soort:italiaans/Seashoen:winter?Nrpp=24“
console.log(s.match(/recepten zoeken\/([^?]+)\?/)[1])
这样做:
var match = url.match(/\/recepten-zoeken\/([^?]+)\?/);
// match[1] == "menugang:hoofdgerecht/soort:italiaans/seizoen:winter"
此正则表达式将匹配第一次出现的/recepten zoeken/
,然后它将开始捕获所有不是问号的字符([^?]
是一个负数字符类,它匹配类中不匹配的任何字符)
请注意,它还将确保有问号。如果您想支持没有问号的情况,则只需删除最后的\?
原始正则表达式只匹配一个字符(
),然后它尝试查找不是c
、e
、k
、//code>或介于n
和z
之间的字符。这样做:
var match = url.match(/\/recepten-zoeken\/([^?]+)\?/);
// match[1] == "menugang:hoofdgerecht/soort:italiaans/seizoen:winter"
此正则表达式将匹配第一次出现的/recepten zoeken/
,然后它将开始捕获所有不是问号的字符([^?]
是一个负数字符类,它匹配类中不匹配的任何字符)
请注意,它还将确保有问号。如果您想支持没有问号的情况,则只需删除最后的\?
原始正则表达式只匹配一个字符(
),然后它尝试查找不是c
、e
、k
、//code>或介于n
和z
之间的字符使用捕获组。(()
括号表示捕获组)
捕捉到最后一个问号
试试这个正则表达式\/recepten zoeken\/(.*)\?
说明:-
\/
匹配正斜杠
recepten zoeken
\/
匹配正斜杠
(.*)
在一个组中捕获字符串中直到最后一个问号的所有值(新行除外)(这将包含您的值)
\?
逐字匹配
/----------------------------选择“直到最后一个”-----------------------------
str=”https://localhost:8443/site/recipes/recepten-zoeken/menugang:hoofdgerecht/soort:italiaans/Seashoen:winter?Nrpp=24“;
var myRegexp=/\/recepten zoeken\/(.*)\?/;
console.log(myRegexp.exec(str)[1]);
使用捕获组。(()
括号表示捕获组)
捕捉到最后一个问号
试试这个正则表达式\/recepten zoeken\/(.*)\?
说明:-
\/
匹配正斜杠
recepten zoeken
\/
匹配正斜杠
(.*)
在一个组中捕获字符串中直到最后一个问号的所有值(新行除外)(这将包含您的值)
\?
逐字匹配
/----------------------------选择“直到最后一个”-----------------------------
str=”https://localhost:8443/site/recipes/recepten-zoeken/menugang:hoofdgerecht/soort:italiaans/Seashoen:winter?Nrpp=24“;
var myRegexp=/\/recepten zoeken\/(.*)\?/;
console.log(myRegexp.exec(str)[1])
你忘了你在评论中发布的/
@ctwheels啊..你应该发布你的答案!我会删除我的。我不介意,你可以使用它。你差不多同时也这么想,我没有权限;)尽管创建一个片段:)我删除了我的评论,但你很快就要发布了!:-)谢谢!你忘了你的/
@ctwheels在评论中发布了它。你应该发布你的答案!我会删除我的。我不介意,你可以使用它。你差不多同时也这么想,我没有权利使用它;)尽管创建一个片段:)我删除了我的评论,我正要发布,但你很快!:-)谢谢!如果有两个?
>在字符串中,这将不正确匹配这将匹配到最后一个问号,当有多个?
@ctwheels我的错误时,没有疑问它想要什么作为输出。不用担心,只需指出情况就是这样。另外,介绍一种方法来修复它,使它匹配到第一个问号(如果是int)最终结果。这将更好地解释您的答案,并为OP提供适当的信息,以选择最能回答其问题的答案。保留您现有的答案(以防OP正在寻找),只需引入第二个正则表达式即可