这是我的代码:
function isValid($string) {
return strlen($string) >= 6 &&
strlen($string) <= 40 &&
preg_match("/'d/", $string) &&
preg_match("/[a-zA-Z]/", $string);
}
// Negative test cases
assert(!isValid("hello"));
// Positive test cases
assert(isValid("abcde2"));
正如您所看到的,我的脚本基于4个条件来验证一个字符串。现在我正在尝试开发这个:
preg_match("/[a-zA-Z]/", $string)
此条件仅针对英文字母返回true
。我如何也可以添加其他字母,如ا ب ث چ
。我该怎么做?
注意:这些字符不是阿拉伯语,而是波斯语。
要匹配英语或波斯语字母,可以使用
preg_match('/['x{0600}-'x{06FF}A-Z]/iu', $string)
'x{0600}-'x{06FF}
范围应该与所有波斯字母匹配。A-Z
范围将匹配所有ASCII字母(由于使用了不区分大小写的/i
修饰符,因此大小写都匹配)。/u
修饰符是必需的,因为您使用的是Unicode字符。
此外,在检查Unicode字符串长度时使用mb_strlen
而不是strlen
,它将正确计算Unicode代码点。
对于
您的密码应至少包含一个字母(该字母可以是任何语言
你需要使用
preg_match('/'p{L}/u', $string)
或
preg_match('/'p{L}'p{M}*+/u', $string)
^^^^^^^^^^^^
这将匹配任何字母(即使是后面有变音符号的字母)。'p{L}
与任何基本Unicode字母匹配,'p{M}*+
将与其后的0+变音符号相匹配。如果不使用匹配值,/'p{L}/u
将足以进行检查。