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谢谢你的回答。你能告诉我吗?:为什么需要这个?谢谢