You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Swift中使用正则验证含阿语/英语字符与数字的密码

解决支持英语/阿拉伯语字母和数字的密码正则问题

Got it, let's adjust that regex to handle both English and Arabic characters properly. The key is to expand our character sets to include Arabic letters and digits while keeping the original validation rules intact.

最终正则与代码实现

Here's the corrected regex and Objective-C code that meets your requirements:

// 适配英语/阿拉伯语字母、数字的密码验证正则
NSString *passwordRegex = @"^(?=.*[\\p{Script=Arabic}A-Za-z])(?=.*[\\d٠-٩])[\\p{Script=Arabic}A-Za-z\\d٠-٩]{8,}$";
if (![[NSPredicate predicateWithFormat:@"SELF MATCHES %@", passwordRegex] evaluateWithObject:password]) {
    return NO;
}

正则规则拆解

Let's break down what each part does:

  • ^ 和 $: 锚定整个字符串,确保没有额外的非允许字符混入
  • (?=.*[\p{Script=Arabic}A-Za-z]): 正向预查规则,要求字符串中至少包含一个阿拉伯语字母(通过\p{Script=Arabic}匹配所有阿拉伯语脚本的字母)或英语字母
  • (?=.*[\d٠-٩]): 另一项正向预查,要求字符串中至少包含一个英语数字(\d即0-9)或阿拉伯语数字(٠-٩对应阿拉伯数字0到9)
  • [\p{Script=Arabic}A-Za-z\d٠-٩]{8,}: 匹配由上述允许字符组成的、长度至少8位的字符串

测试示例

  • ✅ 有效密码:Hello123٤(含英文字母、英语数字、阿拉伯数字,长度8)、أبجده1234(含阿拉伯字母、英语数字,长度8)
  • ❌ 无效密码:12345678(无字母)、abcdefgh(无数字)、أ123(长度仅4)、أبجدهklop(无数字)

内容的提问来源于stack exchange,提问作者Mostafa Sultan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 09:01:35