如何编写正则表达式来匹配虚拟文件夹结构中的所有有效路径?
假设我有一个由如下字符串表示的虚拟文件夹结构:
foo/bar/baz
那么以下字符串应该匹配:
foo
(可能还有foo/
(foo/bar
(可能还有foo/bar/
(foo/bar/baz
(可能还有foo/bar/baz/
(
但这些字符串不应匹配:
foo/ba
foo/bar/b
您的匹配必须从开始匹配到斜杠或字符串结束。
这给出了以下正则表达式:
/^yourstring(/|$)/
其中"yourstring
"可以是:
foo
foo/bar
foo/bar/baz
etc
但不是:
foo/b
foo/ba
etc
要测试的字符串始终是完整路径,如:
foo/bar/baz
您可以使用此^(w+/?)+$
模式;w
与[a-zA-Z0-9_]
相同
这是js 中的一个演示
function isValid(str){
return /^(w+/?)+$/.test(str)
}
console.log(isValid("foo"))
console.log(isValid("foo/"))
console.log(isValid("for/bar/baz"))
console.log(isValid("for/bar/baz/"))
//invalid filenames
console.log(isValid("for/bar//"))
console.log(isValid("rdxrc/+"))
console.log(isValid(";/lllj/ii/"))