无法以字符开头或结尾的用户名

Kob*_*ius 5 ruby regex

我正试图用正则表达式来实现这些规则:

  • 可以包含小写和大写字母和数字
  • 可以包含下划线和句点
  • 连续不能包含2个下划线
  • 不能连续包含2个句点
  • 不能以下划线或句号开头或结尾
  • 不能包含带重音的字母
  • 长度必须在3到28个字母之间

有效:

Spicy_Pizza
97Indigos
Infinity.Beyond
Run Code Online (Sandbox Code Playgroud)

无效:

_yahoo
powerup.
un__real
no..way
Run Code Online (Sandbox Code Playgroud)

这是我现在的正则表达式:

^(?:[a-zA-Z0-9]|([._])(?!\1)){3,28}$
Run Code Online (Sandbox Code Playgroud)

除了以下划线或句号开头和结尾的例外之外,所有规则似乎都有效.

Cer*_*nce 4

听起来您只需要向字符串的第一个和最后一个字符添加字母数字检查。因为这将占用 2 个字符,所以将内部重复从 更改{3,28}{1,26}

^[A-Za-z\d](?:[a-zA-Z0-9]|([._])(?!\1)){1,26}[A-Za-z\d]$
 ^^^^^^^^^^                             ^^^^ ^^^^^^^^^^
Run Code Online (Sandbox Code Playgroud)

https://regex101.com/r/G6bVaZ/1