正则表达式主要匹配字母数字路径

时间:2015-08-30 20:43:16

标签: javascript regex node.js

我尝试创建一个正则表达式来验证我使用GridFS编写的文件系统API的路径名。

我目前的RegEx ^[A-Za-z0-9\-\[\]()$#_./]*$可以满足以下条件:

  • 允许a-zA-Z0-9-[]()$#_./

然而,它不符合这些额外标准:

  • 第一个角色必须是/
  • 连续不得出现多个/

问题:

  • 有人可以帮我修复我的RegEx吗?
  • 使用我的路径名标准是否存在任何问题? (我错过了什么重要的事吗?)

2 个答案:

答案 0 :(得分:3)

不确定路径标准,但关于RegExp,非常简单:

^\/(?!\/)([A-Za-z0-9\-\[\]()$#_.]|(\/(?!\/)))*$

\/(?!\/)表示斜杠/后面没有斜杠(?!\/)。我使用它两次,一次作为第一个字符,再次作为第一个字符后的可能匹配之一。

答案 1 :(得分:1)

以下是您如何满足您的要求。要强制执行第一个字符/,只需在^之后添加。

^\/[A-Za-z0-9\-\[\]()$#_./]*$

要不允许连续斜杠,您应该从字符集中删除它,并将该集视为路径的一部分。部分将用斜线分隔。所以最终的正则表达式是:

^\/([A-Za-z0-9\-\[\]()$#_.]\/?)*$