Xåp*_* - 2 javascript regex string contains startswith
说我有以下网址:
如何创建一个匹配任何以上面的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来做一个"开始"检查,但我特别需要一个正则表达式,因为我必须提供一个到第三方库.
^表达式开头的修饰符意味着"字符串必须以"开头:
/^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)