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

时间:2014-09-19 09:14:34

标签: javascript regex string contains startswith

说我有以下网址:

  

http://example.com/api

如何创建一个与任何网址匹配的正则表达式上面的网址?

例如:

  

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做一个“开头”检查,但我特别需要一个正则表达式,因为我必须提供一个到第三方库。

5 个答案:

答案 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)

您可以使用'锚点'匹配字符串的开头(或结尾)。

更多信息:http://www.regular-expressions.info/anchors.html