快速使用正则表达式阿拉伯和英语字符进行密码验证

Alsh编译器

我想验证密码,以包括至少1个阿拉伯文或英文字母和至少1个阿拉伯文或英文数字,​​并且密码至少为8位,我原来只为英语编写的代码如下:

let passwordRegex = "^(?=.*[A-Za-z])(?=.*\\d)[A-Za-z\\d]{8,}$"
if (!NSPredicate(format:"SELF MATCHES %@",passwordRegex).evaluate(with: password)){
    return false
}

然后我找到了阿拉伯字符和数字的答案,然后我试图像这样合并两者:

let passwordRegex = "^(?=.*[A-Za-zء-ي])(?=.*٠-٩\\d)[A-Za-zء-ي٠-٩\\d]{8,}$"
if (!NSPredicate(format:"SELF MATCHES %@",passwordRegex).evaluate(with: password)){
    return false
}

请告知发生了什么问题,提前谢谢

维克多·史翠比维

由于英文或阿拉伯字母正则表达式(如您所链接的答案中所述,也请参见此答案)也是[a-zA-Za-z\u0621-\u064A],因此[0-9\u0660-\u0669]您可以使用英文或阿拉伯数字正则表达式

let passwordRegex = "^(?=.*[a-zA-Z\\u0621-\\u064A])(?=.*[0-9\\u0660-\\u0669])[a-zA-Za-z\\u0621-\\u064A0-9\\u0660-\\u0669]{8,}$"

注意:您不需要外部^$锚,因为MATCHES需要模式以匹配整个字符串输入。

将阿拉伯字母与Swift中使用的ICU正则表达式匹配的另一种方法是使用[\p{L}&&[\p{script=Arabic}]](它是字符类中的交集,它匹配除阿拉伯字符集以外的任何字母)。与数字相同:[\p{N}&&[\p{script=Arabic}]]然后,正则表达式将看起来像

let passwordRegex = "^(?=.*[\\p{L}&&[\\p{script=Arabic}A-Za-z]])(?=.*[\\p{N}&&[\\p{script=Arabic}0-9]])[\\p{L}\\p{N}&&[\\p{script=Arabic}a-zA-Z0-9]]{8,}$"

所以在这里

  • [\\p{L}&&[\\p{script=Arabic}A-Za-z]] -任何字母,但应属于ASCII字母或阿拉伯文字
  • [\\p{N}&&[\\p{script=Arabic}0-9]]-除0-9范围或阿拉伯文字外的任何数字
  • [\\p{L}\\p{N}&&[\\p{script=Arabic}a-zA-Z0-9]]-任何字母或数字,但仅从ASCII 0-9A-Za-z和阿拉伯文字。

还要注意,为了匹配任何字母,您可以使用\p{L}并匹配您可以使用的任何数字\d(它们在ICU库中支持Unicode)。因此,如果字母或数字是阿拉伯语,英语,希腊语或其他字母,则*如果t无关紧要,则可以使用

let passwordRegex = "^(?=.*\\p{L})(?=.*\\d)[\\p{L}\\d]{8,}$"

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

正则表达式使用javascript用英语和阿拉伯语字符串中的空格替换特殊字符

阿拉伯语和英语数字的正则表达式,以及国家/地区代码

沙特阿拉伯移动电话和固定电话号码正则表达式验证

正则表达式阿拉伯字母,带或不带特殊字符

正则表达式仅限阿拉伯字符和数字

在正则表达式中检测阿拉伯字符

飞镖中阿拉伯字符的正则表达式飞镖

使滚动的正则表达式适应ID jQuery脚本以包含阿拉伯字符

带有触发阿拉伯语的特定特殊字符的正则表达式

如何使用正则表达式从字符串中仅检索阿拉伯文本?

阿拉伯数字和空格仅正则表达式

正则表达式删除所有英文和阿拉伯数字?

正则表达式匹配阿拉伯语日期或日期正常

iOS正则表达式阿拉伯语

不带数字的波斯(阿拉伯)字母的正则表达式

正则表达式匹配阿拉伯关键字

正则表达式中的范围用于阿拉伯字母

用正则表达式匹配阿拉伯语文本

正则表达式与阿拉伯语匹配

如何创建用于解析阿拉伯日期的正则表达式

正则表达式阿拉伯语语音匹配

尝试向工作的正则表达式添加阿拉伯数字支持

阿拉伯语正则表达式给出TypeError

正则表达式,用于匹配沙特阿拉伯(KSA)车辆编号模式

python 2.7中阿拉伯语单词的正则表达式

阿拉伯字母被视为正则表达式中的符号

使用正则表达式进行密码验证

使用正则表达式进行密码验证

使用正则表达式和模式验证密码