我到处搜索但我找不到合适的正则表达式
我有$string
,我想确保它包含最后一个大写字母和一个数字。没有其他字符只允许数字和字母。用于密码要求。
John8 = good
joHn8 = good
jo8hN = good
我将使用preg_match
函数
大写和字母可以在单词的任何地方,不仅在乞讨或结束
答案 0 :(得分:2)
这应该有用,但有点乱。考虑使用多个检查来提高可读性和可维护性......
preg_match('/^[A-Za-z0-9]*([A-Z][A-Za-z0-9]*\d|\d[A-Za-z0-9]*[A-Z])[A-Za-z0-9]*$/', $password);
答案 1 :(得分:1)
使用lookahead:
preg_match('/^(?=.*[A-Z])(?=.*[0-9])[a-zA-Z0-9]+$/', $string);
答案 2 :(得分:0)
答案 3 :(得分:0)
您的申请需要“精确的语法描述”,以及许多用于断言您的描述的示例。只有3或4个例子是不够的,非常开放。
上次确认的更新:
preg_match('/^([a-z]*\d+[a-z]*[A-Z][a-z]*|[a-z]*[A-Z][a-z]*\d+[a-z]*)$/',$str)
第一个解决方案preg_match('/^[A-Z][a-z]+\d+$/',$str)
编辑后1:preg_match('/^[a-z]*[A-Z][a-z]*\d+$/',$str)
在你对utf8的评论之后:哼...在你的问题上加上有效的语言。示例:“José11”是一个有效的字符串?
你的edit2(“jo8hN”有效)之后:和关于号码,可以重复吗?好吧,我想不是。 “8N”有效吗?我想是的。 preg_match('/^([a-z]*\d+[a-z]*[A-Z][a-z]*|[a-z]*[A-Z][a-z]*\d+[a-z]*)$/',$str)
您可以使用“|”添加更多可能性在这个正则表达式。