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

时间:2012-09-19 13:31:56

标签: javascript regex

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

/(.*)(http|https):\/\/(.*)(\/)(.*)/ and then $3

我的问题是“域名”,而不是“域名”,我获得了“域/更多路径”。 我做错了什么?

2 个答案:

答案 0 :(得分:1)

也许这样:

/([^:]*):\/\/([^\/]*)(.*)/

现在$ 2应该只是一个域名。

答案 1 :(得分:0)

更改

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

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

问题在于.*部分。 *是一个贪婪的量词,会消耗尽可能多的字符。如果你在?后面加*,你就可以将限定符的行为转换为非贪婪(即它只消耗所需数量的字符)。