ios - 如何在 Swift 中组合正则表达式?
问题描述
我有以下单个正则表达式我想使用 AND 条件组合它们,我正在使用它们来验证密码
. [AZ]+。 - 验证大写(一个字母大写最小)
. [0-9]+。 - 验证号码(至少一个号码)
. [az]+。 - 验证小写(最少一个小写)
.{8,} - 验证最小字符 8
. [^A-Za-z0-9]。 - 验证特殊字符(至少一个特殊字符)
(.)\1 - 验证连续字符(无连续字符)
现在我正在分别验证每个字符,但我只想在一个函数中进行
我尝试了以下组合方式
/^((.)\1)(.[AZ]+.)(.[az]+.)(.[0-9]+.)(.[^A-Za-z0-9 ] . ) 。_ _ _ _ *$/
上面没有所有的表达方式,但我试图展示我是如何做到的。
解决方案
一种选择是使用一组使用否定字符类的肯定前瞻:
^(?=[^A-Z]*[A-Z])(?=[^a-z]*[a-z])(?=[^0-9]*[0-9])(?!.*(.)\1)(?=[a-zA-Z0-9]*[^A-Za-z0-9\s])\S{8,}$
这将匹配:
^
字符串的开始(?=[^A-Z]*[A-Z])
断言大写(?=[^a-z]*[a-z])
断言小写(?=[^0-9]*[0-9])
断言数字(?!.*(.)\1)
断言没有连续的字符(?=[a-zA-Z0-9]*[^A-Za-z0-9\s])
断言未列出的字符,包括空格字符(假设不允许)\S{8,}
匹配 8+ 次非空白字符$
字符串结束
请注意,\S
对于允许的字符是广泛匹配,您可以使用字符类指定允许匹配的内容。
推荐阅读
- javascript - Javascript:帮助解析奇怪的 JSON 有效负载
- sql - PL/SQL:如何使用表格中的行显示/导出分层树
- python - 在变量名中不带下划线前导访问类属性
- python - 我正在尝试格式化字符串,但它会生成 AttributeError
- html - Kendo Grid - 使用 html 内容过滤不起作用
- python - 在python中将列表中的随机数相乘
- arrays - 如何在 vuejs 中的方法内进行数组映射
- javascript - 将值从下拉列表添加到表 javascript
- node.js - 为什么我不能 curl 到 127.0.0.1 localhost,但我可以到 instance.localhost?
- r - rjags 模型负二项似然和伽马先验