Javascript 尝试使用正则表达式获取字符串中的子字符串时,无法删除尾随字符

Javascript 尝试使用正则表达式获取字符串中的子字符串时,无法删除尾随字符,javascript,regex,Javascript,Regex,我正在尝试从中获取“域”http://domain.com/some-more-path'使用正则表达式: /(.*)(http | https):\/\/(.*)(\/)(.*)/然后是$3 我的问题不是“域”,而是“域/其他路径”。 我做错了什么?也许这样: /([^:]*):\/\/([^\/]*)(.*)/ 现在$2应该只是一个域。也许这样: /([^:]*):\/\/([^\/]*)(.*)/ 现在$2应该只是一个域。更改 /(.*)(http|https):\/\/(.*)(\/

我正在尝试从中获取“域”http://domain.com/some-more-path'使用正则表达式:

/(.*)(http | https):\/\/(.*)(\/)(.*)/然后是$3

我的问题不是“域”,而是“域/其他路径”。 我做错了什么?

也许这样:

/([^:]*):\/\/([^\/]*)(.*)/
现在$2应该只是一个域。

也许这样:

/([^:]*):\/\/([^\/]*)(.*)/
现在$2应该只是一个域。

更改

/(.*)(http|https):\/\/(.*)(\/)(.*)/

问题是
*
部分
*
是一个贪婪的量词,将消耗尽可能多的字符。如果将
放在
*
后面,则将限定符的行为切换为非贪婪(即,它只消耗所需的字符数)。

更改

/(.*)(http|https):\/\/(.*)(\/)(.*)/


问题是
*
部分
*
是一个贪婪的量词,将消耗尽可能多的字符。如果在
*
后面放置
,则会将限定符的行为切换为非贪婪(即,它只消耗所需的字符数)。

不必要时,不情愿的量词不应过度使用。在你的情况下,这会导致很多不必要的回溯。这个答案正确吗?它似乎已经被接受了,但没有被提高投票率。。。这让我很奇怪为什么它会被接受。这个问题值得回答吗?为什么没有投票?在我看来,你的答案是正确的,尽管不是最优的。请查看有关优化正则表达式的信息。不必要时,不情愿的量词不应该过度使用。在你的情况下,这会导致很多不必要的回溯。这个答案正确吗?它似乎已经被接受了,但没有被提高投票率。。。这让我很奇怪为什么它会被接受。这个问题值得回答吗?为什么没有投票?在我看来,你的答案是正确的,尽管不是最优的。请查看有关优化正则表达式的信息。对不起,我忘记了javascript没有像java一样的所有格量词(++,?+,*+)。所有格量词更合适,因此没有其他选择,因此根本不需要回溯。如果没有它,正则表达式对于存在匹配的情况来说同样是最佳的,但是如果它失败,则速度会慢得多。寻找类似的问题。对不起,我忘了javascript没有像java一样的所有格量词(++,?+,*+)。所有格量词更合适,因此没有其他选择,因此根本不需要回溯。如果没有它,正则表达式对于存在匹配的情况来说同样是最佳的,但是如果它失败,则速度会慢得多。寻找类似的问题。