REGEX最后一个大写和一个数字

时间:2014-02-24 23:55:14

标签: php regex

我到处搜索但我找不到合适的正则表达式

我有$string,我想确保它包含最后一个大写字母和一个数字。没有其他字符只允许数字和字母。用于密码要求。

John8 = good
joHn8 = good
jo8hN = good

我将使用preg_match函数

大写和字母可以在单词的任何地方,不仅在乞讨或结束

4 个答案:

答案 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)

使用此正则表达式pattrn

^([A-Z]+([a-z0-9]+))$

的preg_match

preg_match('~^([A-Z]+([a-z0-9]+))$~',$str);

Demo

答案 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)您可以使用“|”添加更多可能性在这个正则表达式。