我需要为由'。'分隔的两部分字符串编写正则表达式。下面是条件,
我的代码:((?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=\\S+$).*)[.]([\\w]+)$
输入:Vijay.hello876IUY
实际输出:Valid data
预期输出:无效数据(因为第一部分没有任何数字)
任何人都可以帮助我解决这个问题...
答案 0 :(得分:3)
您可以使用
^(?=[^.]*[a-z])(?=[^.]*[A-Z])(?=[^.]*[0-9])[a-zA-Z0-9]+\.[a-zA-Z0-9]+$
请参见regex demo。
详细信息
^
-字符串的开头(?=[^.]*[a-z])
-除.
之外,0 +字符后必须有一个小写ASCII字母(?=[^.]*[A-Z])
-除.
之外,0 +字符后必须有一个大写ASCII字母(?=[^.]*[0-9])
-除.
以外的0+个字符后必须有一个数字[a-zA-Z0-9]+
-1个以上字母数字字符\.
-一个点[a-zA-Z0-9]+
-1个以上字母数字字符$
-字符串的结尾。在Java中:
s.matches("(?=[^.]*[a-z])(?=[^.]*[A-Z])(?=[^.]*[0-9])[a-zA-Z0-9]+\\.[a-zA-Z0-9]+")
由于matches()
需要完整的字符串匹配,因此您不需要在开头^
,也不需要在结尾$
。