Javascript 尝试使用正则表达式获取字符串中的子字符串时,无法删除尾随字符
我正在尝试从中获取“域”http://domain.com/some-more-path'使用正则表达式:Javascript 尝试使用正则表达式获取字符串中的子字符串时,无法删除尾随字符,javascript,regex,Javascript,Regex,我正在尝试从中获取“域”http://domain.com/some-more-path'使用正则表达式: /(.*)(http | https):\/\/(.*)(\/)(.*)/然后是$3 我的问题不是“域”,而是“域/其他路径”。 我做错了什么?也许这样: /([^:]*):\/\/([^\/]*)(.*)/ 现在$2应该只是一个域。也许这样: /([^:]*):\/\/([^\/]*)(.*)/ 现在$2应该只是一个域。更改 /(.*)(http|https):\/\/(.*)(\/
/(.*)(http | https):\/\/(.*)(\/)(.*)/然后是$3
我的问题不是“域”,而是“域/其他路径”。
我做错了什么?也许这样:
/([^:]*):\/\/([^\/]*)(.*)/
现在$2应该只是一个域。也许这样:
/([^:]*):\/\/([^\/]*)(.*)/
现在$2应该只是一个域。更改
/(.*)(http|https):\/\/(.*)(\/)(.*)/
到
问题是*
部分*
是一个贪婪的量词,将消耗尽可能多的字符。如果将?
放在*
后面,则将限定符的行为切换为非贪婪(即,它只消耗所需的字符数)。更改
/(.*)(http|https):\/\/(.*)(\/)(.*)/
到
问题是
*
部分*
是一个贪婪的量词,将消耗尽可能多的字符。如果在*
后面放置?
,则会将限定符的行为切换为非贪婪(即,它只消耗所需的字符数)。不必要时,不情愿的量词不应过度使用。在你的情况下,这会导致很多不必要的回溯。这个答案正确吗?它似乎已经被接受了,但没有被提高投票率。。。这让我很奇怪为什么它会被接受。这个问题值得回答吗?为什么没有投票?在我看来,你的答案是正确的,尽管不是最优的。请查看有关优化正则表达式的信息。不必要时,不情愿的量词不应该过度使用。在你的情况下,这会导致很多不必要的回溯。这个答案正确吗?它似乎已经被接受了,但没有被提高投票率。。。这让我很奇怪为什么它会被接受。这个问题值得回答吗?为什么没有投票?在我看来,你的答案是正确的,尽管不是最优的。请查看有关优化正则表达式的信息。对不起,我忘记了javascript没有像java一样的所有格量词(++,?+,*+)。所有格量词更合适,因此没有其他选择,因此根本不需要回溯。如果没有它,正则表达式对于存在匹配的情况来说同样是最佳的,但是如果它失败,则速度会慢得多。寻找类似的问题。对不起,我忘了javascript没有像java一样的所有格量词(++,?+,*+)。所有格量词更合适,因此没有其他选择,因此根本不需要回溯。如果没有它,正则表达式对于存在匹配的情况来说同样是最佳的,但是如果它失败,则速度会慢得多。寻找类似的问题。