我正试图用正则表达式来实现这些规则:
有效:
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)
除了以下划线或句号开头和结尾的例外之外,所有规则似乎都有效.
听起来您只需要向字符串的第一个和最后一个字符添加字母数字检查。因为这将占用 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