正则表达式 - 需要一些字符,只允许一些额外的?

时间:2016-06-12 12:01:36

标签: php regex laravel-5.2 whitelist

我想在PHP中验证用户名并使用正则表达式检查它们。它们应包含至少2个“真实”字符,例如AÄs15,但其他一些字符如{{1}或者.或者也应该允许空格。所需字符的位置无关紧要。

这是我到目前为止所做的,遗憾的是还允许_作为用户名:

...

我想只允许某些字符。例如,没有preg_match('/^[\pL\pN\s-+_.]+$/u', $value) <。 我怎么能这样做?

1 个答案:

答案 0 :(得分:1)

让我们看看......

  • 至少两个字母/数字:^(?:.*?[\p{L}\p{N}]){2}
  • 允许使用其他字符:^[-+.\w ]+$

让我们将它们结合起来,我们得到:

^(?=(?:.*?[\p{L}\p{N}]){2})[-+.\w ]+$

我使用 lookahead 作为检查至少有2个必需字符的部分,并将其他所有内容放在模式的主要部分中。这可以让您通过同一输入检查两种不同的条件。