Javascript 正则表达式将精确路径与2匹配/

Javascript 正则表达式将精确路径与2匹配/,javascript,regex,Javascript,Regex,我试图用正则表达式匹配下面的路径 # test-site could be anything like "shoe-site", "best-clock", etc. /content/test-site 当前的正则表达式规则(\/content\/{1}\S+已经足够了 问题是它正在匹配整个路径,例如/content/test site/en_US/abc.html 我需要它只匹配/content/test site 要匹配的路径示例: https://localhost:4502/cont

我试图用正则表达式匹配下面的路径

# test-site could be anything like "shoe-site", "best-clock", etc.
/content/test-site
当前的正则表达式规则
(\/content\/{1}\S+
已经足够了

问题是它正在匹配整个路径,例如
/content/test site/en_US/abc.html

我需要它只匹配
/content/test site

要匹配的路径示例:

https://localhost:4502/content/test-site/en_US/book/city/sample-rooms/airport-inn/propertyCode.00000.html
到目前为止,我已经尝试过正则表达式

(\/content\/[a-z-]+)\/[a-z]{2}_[A-Z]{2}\/book(ing-path)?\/(sample-|sample-details)(.*).[0-9]{5}.*

/content/test-site is optional- it might not present sometimes in url.

我做错了什么?如何修复它?

正则表达式以匹配除
/
以外的任何字符:

content\/[^\/]+
这是字符类。以插入符号开头的字符类将匹配该类以外的任何内容。更多

因此,使用javascript:

consturl='/content/testsite/en_US/abc.html';
const path=url.match(/content\/[^\/]+/)

console.log(路径[0])
以下是另一种方法:

(?:\/[a-zA-Z0-9-]+){2}

说明:

(?:                 # Non-capturing group
\/[a-zA-Z0-9-]+     # Match starting with / and followed with characters/digits/-
)                   # Close grouping
{2}                 # Match two times, i.e. only match with two /

可以使用否定字符类

^(?:[^\/]*\/){2}[^\/]*

constpath='/content/testsite/en_US/abc.html';
const desired=path.match(/^(?:[^\/]*\/){2}[^\/]*/)

console.log(需要[0])
如果“测试站点”总是由两个单词(字母数字或下划线)组成,并用
-
分隔,则可以使用
\/content\/\w+-\w+
。请看这里:。如果它可以是除
/
之外的任何内容,则可以使用
\/content\/[^/]+
。请注意,
{1}
是多余的。只需将
\S+
替换为
[^\/]+
马赫即可重复字符。看到这里了吗。。。您是在匹配完整的URL,还是只匹配路径?因为您的“要匹配的路径”示例是一个完整的URL…@crayon只是路径-而不是完整的URL。有时它会有/内容/测试站点,有时不会/嗯,我们/。。。等等。为什么你认为“内容”不是常数?@AhmedAbdelhameed在问题中没有提到任何内容是常数的地方。如果不是呢?我们不知道,我把这个留给OP来决定。我的答案只是一种可能的方法。OP将其用作常量(即,在他/她的模式中)。我不会做出其他假设,但可能那只是我:)@AhmedAbdelhameed我明白你的意思,但我不认为我的答案有任何坏处,如果OP确认它是常数,我会删除答案,没问题。@AhmedAbdelhameed谢谢你的回答。你能告诉我吗?:为什么需要这个?谢谢