1

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

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

但这仍然允许使用双斜杠,例如this//is//allowed

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

编辑 1

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

4

2 回答 2

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
于 2013-08-12T18:18:50.273 回答
0

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

/\/{2}/

于 2013-08-12T18:18:59.257 回答