至少需要一个字母字符
Posted
技术标签:
【中文标题】至少需要一个字母字符【英文标题】:Require at least one alpha character 【发布时间】:2016-06-04 04:10:46 【问题描述】:我们有一个登录表单,可让您输入您的user_id
或player_tag
。我们有一个具有以下规则的模型:
protected $rules = ['player_tag' => 'required|unique|min:3|max:15|regex:/^[a-zA-Z0-9_]+$/'];
有没有办法添加要求player_tag
字段至少包含 1 个字母字符 (a-zA-Z
) 的规则?
【问题讨论】:
所以为了清楚起见,您希望它至少包含一个a-zA-Z
,但也允许0-9
?
@MarkDavidson 是的,这是正确的。因此,123
将无效,但 a23
或 1b3
或 23sdf
将有效
有道理。我还没有尝试过,但是您能否在当前应该匹配的正则表达式之前添加另一个正则表达式规则,例如 regex:/^.*[a-zA-Z].*$/'
,然后移动到您的另一个正则表达式进行最终检查。
也许有人可以回答这是否可能,我只是在检查一些问题:OP 可以使用 strpos() 并要求它返回一个值吗?虽然我认为这可能比直接正则表达式效率低
【参考方案1】:
这可能会对您有所帮助:
^(?=.*[a-zA-Z]).+$
这是一个工作示例:https://regex101.com/r/gD3gR6/2
【讨论】:
专业正则表达式,但你有一个额外的括号 为什么“这可能会有所帮助”? 好的答案将始终解释所做的事情以及这样做的原因,不仅适用于 OP,也适用于 SO 的未来访问者。 这也将匹配任何非字母数字字符,当意图(至少从问题中出现的内容)是除了字母数字之外只允许下划线_
。
这看起来就像我正在寻找的那样工作!
这就是我要警告的。此答案中的正则表达式将允许pl@yer
、playeЯ
甚至pl ay er
之类的值(注意空格)。【参考方案2】:
如果字段的开头应该有一个字母字符,您可以简单地扩展您的正则表达式以在开头检查一个这样的字符:
/^[a-zA-Z][a-zA-Z0-9_]*$/
要要求至少有一个不带特定位置的字母字符,只需使用以下正则表达式:
/^[a-zA-Z0-9_]*[a-zA-Z][a-zA-Z0-9_]*$/
【讨论】:
谢谢,第二个正是我要找的。span> 【参考方案3】:试试这个方法
/^\d*[a-zA-Z][a-zA-Z0-9]*$/
解释:
1. 0 位或更多位;
2. 至少 1 个字符; //这将确保您至少有一个 alpha 条件
3. 0 或 1 个字母数字字符;
【讨论】:
为什么 OP 应该“尝试这种方式”? 好的答案将始终解释所做的事情以及这样做的原因,不仅适用于 OP,也适用于 SO 的未来访问者。以上是关于至少需要一个字母字符的主要内容,如果未能解决你的问题,请参考以下文章
密码强度正则表达式 – 必须包含大写字母,小写字母和数字,至少8个字符等
密码由 6-16 位数字、字母或符号组成,至少包含 2 种字符。 保存
具有至少 1 个数字和 1 个字符且固定长度为 11 的字母数字字符串的正则表达式
javascript regex 至少需要一个字母,一个数字并防止添加某些单词