感谢您访问或只是看到我的问题 我尝试在php上捕获字符串中的一些模式。
模式:
min char = 100
max char = 100
包含[a-z]和[A-Z]和[0-9]以及"#"和" - "和" ="和" +"
如果所有模式匹配并且在字符串中找到,则返回TRUE
否则它将返回FALSE。
$string = "jhJH#KJNkj-HJV=+0ksdbscasdJNKajcajnacakjBKBKjbidcubiISABUIhsdbchdsiweucIBHbhbHBUJHBjhJHBIYBHBCwJHBdcd";
if (preg_match("/^.*(?=.{100,100})(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[#])(?=.*[-])(?=.*[=])(?=.*[+]).*$/", $string)){
$result1 = true;
} else {
$result1 = false;
}
如果100个字符,则此方法有效,但如果字符串长度超过100位,则返回TRUE
我想要返回TRUE,如果字符串长度不低于100位而不是超过100位且它应该包含一个模式。
也许在模式中有任何建议吗?
谢谢你的进步
答案 0 :(得分:2)
你实际上没有设置最小和最大长度,因为在字符串中实际需要100个字符之前允许0 +除换行之外的任何字符。你需要使用
'/^(?=\D*\d)(?=[^a-z]*[a-z])(?=[^A-Z]*[A-Z])(?=[^#]*#)(?=[^-]*-)(?=[^=]*=)(?=[^+]*[+]).{0,100}$/s'
^^^^^^^
这里,模式将匹配0到100任何字符包括。换行符(/s
允许.
匹配换行符)并且要求至少1位,1小写,1大写,1 #
,1 -
,1 {{ 1}}和一个=
。
实际上,有7个条件具有特定要求,因此实际上,最小值为7个字符。您需要将此模式调整为您真正需要的模式。