关于文件夹名称的正则表达式

Jas*_* Li 2 regex

我想要一个正则表达式来测试一个字符串是否满足以下规则:

  1. 它不能以..
  2. 它不能以..结尾。
  3. 它不得包含特殊字符,如!@#$%^&*,但可以包含..
  4. 它不得包含.并排的两个点。

示例有效输入:

  • na.me (中间单点)

示例无效输入:

  • .name (以点开头)
  • name. (以点结尾)
  • na..me (包括并排的两个点)
  • $name (任何位置都不允许出现特殊字符)
  • name# (同样地)
  • na#me (同样地)

Bee*_*Guy 5

我相信这应该有效:

^(\w+\.?)*\w+$  
Run Code Online (Sandbox Code Playgroud)

如果不在 ECMAScript 中,则将\w's替换为[a-zA-Z_0-9].

这里的方法是,与其引用不可接受的内容,更容易引用可接受的内容。
表达式的翻译是:

  • 以一个或多个字母开头,后跟零或一个句点 (.)
    • 所有这些都可以发生零次或多次
  • 以至少一个字母结尾

  • 其他有效字符如空格或 '-' 或 '(' 或 ')' 怎么样?正则表达式不考虑这些字符。 (2认同)