【问题标题】:Regex (HTML input pattern) for username用户名的正则表达式(HTML 输入模式)
【发布时间】:2018-10-19 00:05:26
【问题描述】:

我不太明白如何将正则表达式组合在一起。我一直在尝试将我在这里看到的类似线程中的东西与我一直在谷歌搜索的东西结合起来,但我似乎做错了。

我唯一能做对的是

[A-Za-z0-9]{6,20}

但是当我尝试向模式添加更多内容时,它似乎不起作用。

注意这是使用 HTML 输入模式属性。 我将不胜感激,但如果有人可以为我分解解决方案,我也将不胜感激,这样我可以更好地理解它。

  • 用户名可以包含大写/小写字母
  • 用户名可以包含数字
  • 用户名可以包含下划线、连字符或句点
  • 用户名不能包含空格
  • 用户名不能包含特殊字符
  • 用户名长度应在 6-20 个字符之间

我尝试过这样的事情:

[A-Za-z0-9_-]{6,20}\S

我觉得我有点像在那里,但并不完全在那里。

【问题讨论】:

  • 您可以匹配一个单词字符、点或连字符,而 \S 末尾没有 [\w.-]{6,20}

标签: regex input


【解决方案1】:

以下应该有效:

[A-Za-z0-9\-_\.]{6,20}

分解:

  • A-Z 任何大写字符
  • a-z 任何小写字符
  • 0-9 任意号码
  • \- 连字符(由 '\' 转义,取决于放置的顺序)
  • . 期间

连字符不需要根据顺序转义:

[A-Za-z0-9-_.]{6,20}

或

[A-Za-z0-9_.-]{6,20}

应该有效,而以下不应该:

[A-Za-z0-9_-.]{6,20}

在您使用的模式中,\S 匹配任何不是空格的字符,因此它会在 6-20 字符字符串之后期待一个额外的字符。由于方括号内没有空格(\s),省略表示不允许有空格;特殊字符也是如此。

【讨论】:

  • Period 不需要在字符类中转义。 [A-Za-z0-9_] 可以缩短为 \w
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-07-20
  • 1970-01-01
  • 2010-10-22
  • 1970-01-01
  • 1970-01-01
  • 2011-02-15
  • 2011-07-12
相关资源
最近更新 更多