URL"以"开头"使用正则表达式?

Xåp*_* - 2 javascript regex string contains startswith

说我有以下网址:

http://example.com/api

如何创建一个匹配任何上面的url段开头的 url的正则表达式?

例如:

http://example.com/api/auth(应该匹配)

http://example.com/api/orders(应该匹配)

http://example.com/api/products(应该匹配)

http://example.com/auth(不应该匹配)

http://examples.com/api/auth(不应该匹配)

https://example.com/api/auth(不应该匹配)

是的,显然我可以打电话string.indexOf(url) == 0来做一个"开始"检查,但我特别需要一个正则表达式,因为我必须提供一个到第三方库.

Joe*_*Joe 9

^表达式开头的修饰符意味着"字符串必须以"开头:

/^http:\/\/example\.com\/api/
Run Code Online (Sandbox Code Playgroud)

如果您使用的是另一种支持替代分隔符的语言,那么它可能值得一试,因为URL中包含/s.这在Javascript(h/t TJ Crowder)中不起作用,但在PHP这样的语言中起作用(仅提及它的完整性):

#^http://example\.com/api#
Run Code Online (Sandbox Code Playgroud)

您可以在JavaScript中使用它:

new RegExp("^http://example\\.com/api")
Run Code Online (Sandbox Code Playgroud)

同样值得注意的是,这将是匹配的http://example.com/apis-are-for-losers/something,因为你没有测试/后续api- 只需要记住一些事情.要解决这个问题,你可以在最后使用一个替换,要求你在字符串的末尾或者下一个字符是/:

/^http:\/\/example\.com\/api(?:$|\/)/

new RegExp("^http://example\\.com/api(?:$|/)")
Run Code Online (Sandbox Code Playgroud)