Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/19.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
Regex 可选尾部斜杠的正则表达式匹配_Regex - Fatal编程技术网

Regex 可选尾部斜杠的正则表达式匹配

Regex 可选尾部斜杠的正则表达式匹配,regex,Regex,我正在尝试匹配: /app /应用程序/ /应用程序/** 但不是: /app** 尾随斜杠应该是可选的。我不能完全让它工作 ^/app/([^/]*)/?匹配/app/和/app/**,但不匹配/app,这将起作用: ^/app(/[^/]*)? 编辑: 这也将有助于: ^/app(/.*)? 你试过这个吗: ^/app(/[^/]+)*/? 我不确定**这件事,但你真的需要这样的东西吗 ^/app/?(/[^/]+)*/?$ 试试这个: ^\/app((\/\w+)

我正在尝试匹配:

/app
/应用程序/
/应用程序/**
但不是:

/app**
尾随斜杠应该是可选的。我不能完全让它工作

^/app/([^/]*)/?
匹配
/app/
/app/**
,但不匹配
/app
,这将起作用:

^/app(/[^/]*)?
编辑: 这也将有助于:

^/app(/.*)?
你试过这个吗:

   ^/app(/[^/]+)*/?
我不确定**这件事,但你真的需要这样的东西吗

   ^/app/?(/[^/]+)*/?$
试试这个:

^\/app((\/\w+)+|\/?)$
匹配以下所有选项

/app1
/app1/
/app1/无论什么

/app2
/app2/
/app2/无论什么

^/app(?:/(.*))?$
将匹配

/app
/app/
/app/无论什么

立即在生产中使用此功能:

^/app(?:/(.*))?$
^\/app((\/.*$)|$)
下面是一个关于RegExr的例子


谢谢你,但这仍然符合/app**。我想精确匹配/app、/app/或/app/任何内容**。我很难理解“这里你必须有一个/或结束”的正则表达式。这里是什么?一些随机字符或两个连续的*?任意随机字符。很抱歉没有说明。那么/app和/application有什么不同呢????或者“/app”部分是固定值?固定值。我必须为/app、/app/或/app/任何***路由到同一个地方。但是/application完全是另一回事。
**
意味着像
/app/**
中的任何路径都可以是
/app/a/path/to/something
?或者
**
字面意思?是的,任何路径都会匹配(如您的/app/a/path/to/something示例)。是否有某种正则表达式表示“要么到此结束,要么具有此字符(/)以及其他任何内容。我在or中尝试了ends with,但也不起作用。不,它不会起作用,因为可选部分中有前导斜杠。但它不允许/app/foo/bar。可能不允许使用子表达式,但它仍然匹配。不过,我非常感谢您的回答。谢谢。它甚至会允许/app/foo/bar,因为缺少end运算符。尽管如此它不会被保存。也就是说,我会将字符串修改为:^/app(/.*)(添加到原始帖子中)缺少end运算符会导致/appfoo也匹配,这是不可取的。这非常接近!但由于它只匹配单词字符,/app/whatever/other/path将不匹配。不过,我知道你要去哪里了。我会处理它,看看我能想出什么。谢谢!在这种情况下,请尝试一些更简单的方法,如
^/app(/.*)?$#
哇。这一直都在我面前。非常感谢,@cbuckley!