Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/416.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 带有多个目录的URL的正则表达式_Javascript_Regex - Fatal编程技术网

Javascript 带有多个目录的URL的正则表达式

Javascript 带有多个目录的URL的正则表达式,javascript,regex,Javascript,Regex,我正在尝试匹配一种混合了数字和文本的特定格式。这些数字是不同的日期 这些应该匹配: /shop/2017/12/04/文本字符串/另一个文本字符串 /shop/2017/12/04/文本字符串/另一个文本字符串/ 这些不应该: /shop/2017/12/04/文本字符串/另一个文本字符串/更多文本 /shop/2017/12/04/文本字符串/ /shop/2017/12/04/文本字符串 这可能吗 到目前为止,我已经做到了这一点,但在某些情况下,这似乎是不应该的: ^/shop/(.*)/

我正在尝试匹配一种混合了数字和文本的特定格式。这些数字是不同的日期

这些应该匹配:

/shop/2017/12/04/文本字符串/另一个文本字符串

/shop/2017/12/04/文本字符串/另一个文本字符串/

这些不应该:

/shop/2017/12/04/文本字符串/另一个文本字符串/更多文本

/shop/2017/12/04/文本字符串/

/shop/2017/12/04/文本字符串


这可能吗

到目前为止,我已经做到了这一点,但在某些情况下,这似乎是不应该的:


^/shop/(.*)/(.*)/(.*)/(.*)/(.*)$

你需要避开
/
,并且非常确定你不想把
*
放在末尾,因为这将匹配最后一个
//code>之后的任何内容,而这不是你所需要的;试试这个
/^\/shop\/\d{4}\/\d{2}\/\d{2}(?:\/[^/]+){2}\/?$/

  • ^\/shop
    匹配开头的
    /shop
  • \/\d{4}\/\d{2}\/\d{2}
    匹配
    /year/month/day
  • (?:\/[^/]+){2}\/?$
    将另外两个文本块与末尾的可选
    /
    匹配
var samples=[“/shop/2017/12/04/文本字符串/另一个文本字符串”,
“/shop/2017/12/04/文本字符串/另一个文本字符串/”,
“/shop/2017/12/04/文本字符串/另一个文本字符串/更多文本”,
“/shop/2017/12/04/string of text/”,
“/shop/2017/12/04/文本字符串”]
console.log(
samples.map(s=>/^\/shop\/\d{4}\/\d{2}\/\d{2}(?:\/[^/]+){2}\/?$/.test)

);在什么基础上第一个被接受,最后一个不被接受?使用这样的正则表达式生成器可能会对您有所帮助。因此,您要说的是,您希望确保这些字符串具有
/shop/
和一年
/2017
以及有效的月份
/08/
和日期
/25/
,但也有两个字符串附加在一起在
/string of text/另一串text/
末尾?