说我有以下网址:
如何创建一个与任何网址匹配的正则表达式上面的网址?
例如:
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
做一个“开头”检查,但我特别需要一个正则表达式,因为我必须提供一个到第三方库。
答案 0 :(得分:7)
表达式开头的^
修饰符意味着“字符串必须以”:
/^http:\/\/example\.com\/api/
如果您使用支持替代分隔符的其他语言,则可能值得这样做,因为URL中将包含/
。这个在Javascript(h / t T.J.Crowder)中不起作用,但在PHP这样的语言中完成(仅提及它的完整性):
#^http://example\.com/api#
你可以在JavaScript中使用它:
new RegExp("^http://example\\.com/api")
同样值得注意的是,这将与http://example.com/apis-are-for-losers/something
匹配,因为您在/
之后没有测试api
- 只需记住一些事项。要解决这个问题,您可以在结尾处使用替换,要求您位于字符串的末尾,或者下一个字符为/
:
/^http:\/\/example\.com\/api(?:$|\/)/
new RegExp("^http://example\\.com/api(?:$|/)")
答案 1 :(得分:3)
如果您的搜索字词不变,为什么要使用正则表达式?
if (str.substr(0, 22) == 'http://example.com/api') console.log('OK');
答案 2 :(得分:1)
因为它的javascript你可以尝试这个
var str = "You should match this string that starts with";
var res = str.match(/^You should match.*/);
alert(res);
答案 3 :(得分:1)
^http:\/\/example\.com\/api.*
正则表达式link
答案 4 :(得分:0)
您可以使用'锚点'匹配字符串的开头(或结尾)。