物理路径的正则表达式

时间:2010-07-01 11:00:19

标签: asp.net regex asp.net-mvc

有人可以告诉我物理路径的javascript正则表达式,如

1)用户应在文本框中输入类似内容(c:// Folder1 /)。也许在d:或e:

2)但在那之后可以接受

a)(c:// Folder1 / Folder2 /)

b)(d://Folder1/Folder2/Folder3/abc.txt)

e)(c://Folder1/Folder2/Folder3/abc.txt)

2 个答案:

答案 0 :(得分:1)

从你给出的例子来看,这样的事情应该有效:

[a-zA-Z]://(\w+/)+

即:
[a-zA-Z] =一个字母(大写或小写)
其次是 :// =字符“://”
其次是:
(\w+/)+ =至少一个“某事/” “某事/”定义为:
\w+ =至少一个单词字符(即任何字母数字),后跟
/ =文字字符“/”

希望这会有所帮助 - 我的语法可能有些偏差,因为我还没有完全掌握正则表达式的javascript变种。

编辑:将正则表达式放在代码标记中以便它可见!并整理解释。

答案 1 :(得分:1)

这个问题实际上比你想象的要棘手。您正在尝试验证路径,但路径可能非常难以正确验证。您是否正确处理UNC网络路径,例如?

这称为canonicalization problem,是编写安全代码的一部分。我建议您查看some guidance from Microsoft以正确规范化并验证应用程序中的路径。规范化路径的优点是您还隐式验证其格式,因为规范形式将从库调用返回,该库调用仅返回可能有效(正确格式化)的路径。这意味着您根本不需要进行任何类型的正则表达式验证。只需将字符串抛出到规范化路径的方法(可能是Path.GetFullPath())并处理无效路径的异常。