如何在Javascript中使用通配符验证URL路径?

时间:2011-04-06 13:55:41

标签: javascript jquery

str = 'http://*.foo.com/bar/'是一个有效的字符串。

如何编写正则表达式以在JavaScript中验证?

`http://xyz.foo.com/bar/`     ✓ valid
`http://xyz.foo.com/bar/abc/` ✗ invalid
`http://xyz.foo.com/`         ✗ invalid

4 个答案:

答案 0 :(得分:2)

尝试在RegExr玩游戏。它有很多很好的信息,当你完成后会在页面底部给你一个javascript正则表达式。

试试这个:

var url = // your url
url.match(/http://[a-zA-Z_0-9]+\.foo\.com/bar/$/g)

$匹配字符串的结尾。最后的$将确保其后没有文字。

答案 1 :(得分:0)

你能提供更多细节吗?

e,g,/^http://[a-zA-Z]+.foo.com/bar/$/g

如果它在单行上(通过^ $分隔符),

将执行您正在寻找的内容。它将匹配xyz但不匹配xyz1,如果你想包含数字,这很容易修复。

玩它并告诉我你是否还有其他问题。

答案 2 :(得分:0)

一旦页面加载,您可以将一些location对象的属性分配给您自己的变量(因为location可以随后更改):

var hostURL = location.host;    //should be '*.foo.com'
var pathURL = location.pathname;    //should be '/bar'

然后创建一个RegExp对象:

var regex = '.*\.foo\.com/bar/$';
var testURL = new RegExp(regex);

测试网址:

if (testURL(hostURL + pathURL)) {
    //do something
}

答案 3 :(得分:0)

这个正则表达式适合你。

[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+(?:[A-Z]{2}|com|org|net|edu|gov)\b

将上述内容分配给变量。并使用javascript的test()方法测试此模式是否与您选择的url匹配。如果需要,请更新以满足您的需求。