不能以字符开头或结尾的用户名

时间:2018-08-13 00:58:07

标签: ruby regex

我正在尝试使用正则表达式来实现这些规则:

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

有效:

Spicy_Pizza
97Indigos
Infinity.Beyond

无效:

_yahoo
powerup.
un__real
no..way

这是我当前的正则表达式:

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

除下划线或句号开头和结尾以外,所有规则似乎都在起作用。

2 个答案:

答案 0 :(得分:4)

类似的声音只需要在字符串的第一个和最后一个字符中添加字母数字检查。因为这将占用2个字符,所以将内部重复从{3,28}更改为{1,26}

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

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

答案 1 :(得分:1)

我宁愿明确指出字符串不能以句号或下划线开头或结尾,而不是规定在字符串的开头和结尾允许使用哪些字符。

@foreach($products as $product)
   <li>
    @include('items.product')
 </li>
@endforeach