【问题标题】:Regex - Without Special Characters [closed]正则表达式 - 没有特殊字符[关闭]
【发布时间】:2011-07-25 10:33:32
【问题描述】:

我正在使用正则表达式来验证用户名

^[a-zA-Z]+\.[a-zA-Z]{4,10}^'

不幸的是,如果该值包含!@#$%^&*)(':;等特殊字符,则不会影响

我很乐意为 Regex 获得一些帮助,其中包含:

  • 仅限字母数字 (a-zA-Z0-9)
  • 长度介于 4 - 10 个字符之间。

【问题讨论】:

  • “不幸的是,如果值包含特殊字符,它不会影响”是什么意思?您发布的正则表达式不应允许特殊字符。 (顺便说一句,你用的是什么语言?)
  • 所以你不想支持 Unicode 用户名?

标签: regex special-characters alphanumeric


【解决方案1】:

您指定的条件不符合您发布的正则表达式。

我猜你发布的^[a-zA-Z]+\.[a-zA-Z]{4,10}^ 的正则表达式是错误的,因为最后是^它永远不会匹配任何表达式,如果你想匹配@987654325 @ 在表达式的末尾,你需要像这样 \^ 转义它。但是^ 单独表示“这里是表达式的开头”,而$ 表示“这里是表达式的结尾”。

尽管如此,它表示:

  • 它以 alpha 开头(至少为 1)。
  • 必须有一个'.'句号。
  • 现在必须至少有 4 个 alpha。

你需要的正则表达式真的是:

^[a-zA-Z0-9]{4,10}$

这说:

  • 以字母数字开头。
  • 字母数字最少为 4 个,最多为 10 个。
  • 表达式结束。

【讨论】:

  • 谢谢,但例如,输入 !username 我从正则表达式中收到了 true
  • 不,去regexpal.com,把^[a-zA-Z0-9]{4,10}$放在第一个盒子里,把!username放在第二个盒子里,明白吗?不是发黄的,改成username就可以了。你还是用什么语言?
  • 谢谢,PHP - preg_match('/^[a-zA-Z0-9]{4,10}$/', $username);
  • @Guy Dor,这是一个PHP Regular Expression test website,尝试测试username!username,看看有什么不同。 P.S:我尝试了POSIX和PCRE,它们给出了相同的结果。
  • 所以 ^[a-zA-Z0-9]$ 不会是特殊字符,任何长度?
【解决方案2】:

试试这个:

^[a-zA-Z0-9]{4,10}$

【讨论】:

    猜你喜欢
    • 2012-10-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多