用于登录的正则表达式(PHP)

用于登录的正则表达式(PHP),php,regex,login,Php,Regex,Login,我需要一些正则表达式方面的帮助。我需要检查登录,登录可以有字母,数字和下划线。它必须至少有一个字母,中间可以有下划线 现在我有这个: ^[a-z0-9.]+$/iu 但它允许以任何顺序使用所有内容。在此处尝试此选项: ^(?<=[a-z])(?<=[0-9])[a-z0-9]+(_[a-z0-9]+|)$/iu 因此,开头必须至少有一个字母或数字。这可能是可选的,至少有一个字母/数字,或者没有安装 在这里试试这个: ^(?<=[a-z])(?<=[0-9])[a-z0-

我需要一些正则表达式方面的帮助。我需要检查登录,登录可以有字母,数字和下划线。它必须至少有一个字母,中间可以有下划线

现在我有这个: ^[a-z0-9.]+$/iu 但它允许以任何顺序使用所有内容。

在此处尝试此选项:

^(?<=[a-z])(?<=[0-9])[a-z0-9]+(_[a-z0-9]+|)$/iu
因此,开头必须至少有一个字母或数字。这可能是可选的,至少有一个字母/数字,或者没有安装

在这里试试这个:

^(?<=[a-z])(?<=[0-9])[a-z0-9]+(_[a-z0-9]+|)$/iu
因此,开头必须至少有一个字母或数字。这可能是可选的,至少有一个字母/数字,或者没有安装


我猜你在找这个

^(?=[a-zA-Z\d].*)(?=.*[a-zA-Z])(?=.*[a-zA-Z\d]$)(?=[^_]*(_)?[^_]*$)[a-zA-Z\d_]+$
  ---------------  ------------ ---------------- ---------------
        |              |                |              |->this checks that there is 0 to 1 occurance of _
        |              |                |->this checks if it ends with any of [a-zA-Z\d]
        |              |->this checks if there is atleast 1 alphabet
        |->this checks that it starts with [a-zA-Z\d]

测试一下

我想你是在找这个

^(?=[a-zA-Z\d].*)(?=.*[a-zA-Z])(?=.*[a-zA-Z\d]$)(?=[^_]*(_)?[^_]*$)[a-zA-Z\d_]+$
  ---------------  ------------ ---------------- ---------------
        |              |                |              |->this checks that there is 0 to 1 occurance of _
        |              |                |->this checks if it ends with any of [a-zA-Z\d]
        |              |->this checks if there is atleast 1 alphabet
        |->this checks that it starts with [a-zA-Z\d]

测试它

居中是否意味着您不希望在开始处使用下划线..以及您希望它以什么顺序出现,例如:word,但不是word或word,最多一个下划线,或者多个下划线?您没有指定允许元素出现的顺序。你也能举一些有效和无效用户名的例子吗?@user1821941你的问题很不完整。我们猜不出你脑子里想的是什么。中间的意思是你一开始不需要下划线。你希望它按什么顺序排列,例如:word\u word,但不是word或word\u max一个下划线,或者不止一个?您没有指定允许元素出现的顺序。你能举一些有效和无效用户名的例子吗,太?@user1821941你的问题很不完整。我们猜不出你在想什么。现在它不允许只使用字母。在这种情况下,你只需要在断言后面添加第二个积极的外观。现在它不允许只使用字母。在这种情况下,你只需要在断言后面添加第二个积极的外观。它也起作用,但雷基尔的变种更好,因为它更小。但也谢谢你@user1821941是的,rekire的解决方案很小很好,但我总是在多个匹配中使用lookaheads。这确实使regex变得巨大,但您可以稍后调试它,而不会产生任何混乱。它也可以工作,但rekire的变体更好,因为它更小。但也谢谢你@user1821941是的,rekire解决方案很小很好,但我总是在多个匹配中使用lookaheads。这确实会使正则表达式变得巨大,但您可以在以后调试它而不会产生任何混乱