Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/465.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将在关键字之后和问号之前匹配的正则表达式_Javascript_Regex_Between - Fatal编程技术网

Javascript 将在关键字之后和问号之前匹配的正则表达式

Javascript 将在关键字之后和问号之前匹配的正则表达式,javascript,regex,between,Javascript,Regex,Between,我在regex101上遇到了以下测试字符串: 我正在尝试匹配中间的所有内容:recepten zoeken/和 我目前的尝试让我一事无成,因为我是编写正则表达式的新手。有人想插手吗 这就是我目前拥有的: .(?=([^/recepten zoeken/]?)*$)尝试在捕获组中捕获您的值: 解释 recepten zoeken \/匹配正斜杠 ([^?]+)在组中捕获一个不匹配问号的否定字符类[^。(这将包含您的值) \?逐字匹配 var s=”https://localhost:84

我在regex101上遇到了以下测试字符串:

我正在尝试匹配中间的所有内容:recepten zoeken/和

我目前的尝试让我一事无成,因为我是编写正则表达式的新手。有人想插手吗

这就是我目前拥有的:


.(?=([^/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正在寻找),只需引入第二个正则表达式即可