使用正则表达式检查相对URL是否有效?

时间:2017-02-22 12:43:22

标签: node.js validation server xmlhttprequest

我正在搜索正则表达式,用于检查相对URL是否有效。

例如:

/ somesite =>有效

http://WebReference.com/experts/ =>无效。 (绝对值)

../ experts / =>有效

3 个答案:

答案 0 :(得分:1)

根据您的需要,您只需检查路径的开头

所以这个/^(\.\.\/|\.\/|\/)/可以胜任。

它只允许使用/./../

的路径

答案 1 :(得分:0)

有一个相关问题:

Regex check if given string is relative URL

基于此,你最终可以使用:

<div class="btn-group" data-toggle="buttons">
    <input id="option-1" type="radio" name="test-toggle" checked="checked">
    <label for="option-1" class="btn btn-default-toggle-ghost active">
        Option 1
    </label>
    <input id="option-2" type="radio" name="test-toggle">
    <label for="option-2" class="btn btn-default-toggle-ghost active">
        Option 2
    </label>
 </div>

此正则表达式还有一个在线演示,您可以轻松尝试:

https://regex101.com/r/fW9eM4/1

答案 2 :(得分:0)

我会评论我的结果:

你想要以'/'或'../'开头的相对路径,所以我假设你也想接受'./':

(\.?){2}\/

文件夹名称通常是带下划线的字母数字[a-zA-Z0-9_],但减号通常也很好:

[a-zA-Z0-9_\-]

Foldernames至少有一个字符但不限:

[a-zA-Z0-9_\-]+

如果您想将它们限制为30个字符:

[a-zA-Z0-9_\-]([a-zA-Z0-9_\-]?){29}

至少有一个Foldername,但上面的任何数字:

(\/[a-zA-Z0-9_\-]+)+

可以像角色一样受限制。

结果没有名称长度或文件夹数量的限制:

/^(\.?){2}(\/[a-zA-Z0-9_\-]+)+$/

或者,如果你还想接受以“/ root / manuals /”之类的斜杠结尾的路径,你需要附加/?

/^(\.?){2}(\/[a-zA-Z0-9_\-]+)+\/?$/

结尾的'^'和'$'阻止表达式匹配

之类的东西
XXXXXXXXXXXXX/root/directory_1/YYYYYYYYYYYYY