我在下面显示的模式中有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和
返回truehttp://example.com/v1(这应该返回false)。
请告诉我有没有办法验证上述网址
提前致谢..
答案 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>