Ruby regex:验证unix文件路径

时间:2013-08-12 18:16:29

标签: ruby regex

我想使用正则表达式验证unix文件路径。

我有\A[0-9a-zA-Z\_\-\/]+\z

但是这仍然允许像this//is//allowed

这样的双斜线

如何确保不允许使用双斜杠?

编辑1

我想允许_, - ,字母数字值,只要它们形成有效的unix目录路径。只是想确保//被禁止。感谢

2 个答案:

答案 0 :(得分:4)

您应该将斜杠移到字符类之外,并使其成为可选项。然后在字符类和斜杠组合上添加量词,重复它们的组合1次或更多次:

\A(?:[0-9a-zA-Z_-]+\/?)+\z

http://rubular.com/r/77kvWAoI4e

(?:
  [0-9a-zA-Z_-]+   # Original character class without `/`. 
  \/?                # An optional slash (Because the string need not end with `/`
)+                   # 1 or more repetition of their combination

你不需要在正则表达式中转义_。在角色类的末尾使用-

最后,您的角色类可以缩减为 - [\w-]。所以,你的正则表达式可以简化为:

\A(?:[\w-]+\/?)+\z

答案 1 :(得分:0)

指定目标字符及其重复次数

/\/{2}/