【问题标题】:A regular expression about folder name关于文件夹名称的正则表达式
【发布时间】:2010-11-12 02:26:15
【问题描述】:

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

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

有效输入示例:

  • na.me(中间单点)

无效输入示例:

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

【问题讨论】:

  • 为什么要使用正则表达式?为什么不只测试字符串是否满足这些属性中的每一个呢?您最终会这样做,以便向用户提供有意义的反馈(“名称可能不以句点 (.) 开头”)。
  • 因为我想使用正则表达式验证。谢谢。

标签: regex


【解决方案1】:

我相信这应该可行:

^(\w+\.?)*\w+$  

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

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

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

【讨论】:

  • 非常感谢。你的翻译启发了我。再次感谢。
  • 其他有效字符如空格或 '-' 或 '(' 或 ')' 呢?正则表达式不考虑这些字符。
  • @Dorian /^([\w|\(|\)\[|\]\-|\.]+\.?)*[\w|\(|\)\[|\]\-|\.]+$/g 可能是这样的吗?这是一种肮脏的解决方法
  • 这缺少像@Dorian 提到的有效字符,比如单引号。
猜你喜欢
  • 2011-09-07
  • 1970-01-01
  • 2012-10-18
  • 1970-01-01
  • 1970-01-01
  • 2017-02-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多