正则表达式 - 需要一些字符并只允许一些额外的字符?
Regex - require some characters and allow only some additional?
我想验证 PHP 中的用户名并使用正则表达式检查它们。它们应至少包含 2 个 'real' 个字符,如 A
、Ä
、s
、1
或 5
,但其他一些如 .
或 _
或空格也应该被允许。所需字符的位置无关紧要。
这是我目前所拥有的,不幸的是也允许 ...
作为用户名:
preg_match('/^[\pL\pN\s-+_.]+$/u', $value)
我只想允许某些字符。例如,没有 <
或 #
。
我该怎么做?
让我们看看...
- 至少两个letters/numbers:
^(?:.*?[\p{L}\p{N}]){2}
- 允许的其他字符:
^[-+.\w ]+$
让我们把它们结合起来,我们得到:
^(?=(?:.*?[\p{L}\p{N}]){2})[-+.\w ]+$
我对检查至少有 2 个必需字符的部分使用了 lookahead,并将其他所有内容放在模式的主要部分。这使您可以在同一输入上检查两个不同的条件。
我想验证 PHP 中的用户名并使用正则表达式检查它们。它们应至少包含 2 个 'real' 个字符,如 A
、Ä
、s
、1
或 5
,但其他一些如 .
或 _
或空格也应该被允许。所需字符的位置无关紧要。
这是我目前所拥有的,不幸的是也允许 ...
作为用户名:
preg_match('/^[\pL\pN\s-+_.]+$/u', $value)
我只想允许某些字符。例如,没有 <
或 #
。
我该怎么做?
让我们看看...
- 至少两个letters/numbers:
^(?:.*?[\p{L}\p{N}]){2}
- 允许的其他字符:
^[-+.\w ]+$
让我们把它们结合起来,我们得到:
^(?=(?:.*?[\p{L}\p{N}]){2})[-+.\w ]+$
我对检查至少有 2 个必需字符的部分使用了 lookahead,并将其他所有内容放在模式的主要部分。这使您可以在同一输入上检查两个不同的条件。