javascript中的Ajax Url模式验证

时间:2014-04-21 08:44:11

标签: javascript ajax regex

我在下面显示的模式中有ajax urls;

http://example.com/v1/components/compId

http://example.com/v1/machine/machineId

http://example.com/v1/graph/startTime=value?endtime=value

http://example.com/v1/graph/startDate=value?enddate=value?startTime=value?endtime=value

我想在javascript中验证上面的url-patterns。我使用了一些像

这样的正则表达式
var regexp = /(ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?/;

但它对http://example.com/v1/machine/machineId

返回true

http://example.com/v1(这应该返回false)。

请告诉我有没有办法验证上述网址

提前致谢..

1 个答案:

答案 0 :(得分:1)

javalearner,如果http://www.example.com/v1是你比赛的固定部分,我认为你可以选择像

那样简单的事情。
if (/http:\/\/example\.com\/v1\/[^\/]+\/[\w=?]+/.test(subject)) {
    // Successful match
} else {
    // Match attempt failed
}

但是,如果该部分未修复,您可以使用类似

的内容
if (/(?:https?|ftp):\/\/[a-z\d-]+\.[a-z]{2,6}\/[^\/]+\/[^\/]+\/[\w=?]+/.test(subject)) {
    // Successful match
} else {
    // Match attempt failed
}

请注意,{2,6}允许顶级域名最多匹配6个字母(com,net等),但您希望将其设置为更长或不受限制。

如果您的字符串末尾有其他特殊字符,则可以将它们添加到[\w=?]+组件的括号内。

此外,如果您希望它不区分大小写,则需要在最终i分隔符和/之间插入.test,如下所示:/i.test < / p>