如何在Swift中组合正则表达式?
How to combine regular expressions in Swift?
我有以下各个正则表达式,我想使用 AND 条件将它们组合起来,我正在使用它们来验证密码
.[A-Z]+. - 验证大写(最少一个字母大写)
.[0-9]+. - 验证号码(至少一个号码)
.[a-z]+. - 验证小写(最少一个小写)
.{8,} - 验证最小字符 8
.[^A-Za-z0-9]. - 验证特殊字符(至少一个特殊字符)
(.)\1 - 验证连续字符(无连续字符)
现在我正在分别验证每个字符,但我只想在一个函数中完成
我尝试了以下组合方式
/^((.))(.[A-Z]+.)(.[a-z]+.)(.[0-9]+.)(.[^A-Za-z0-9].).*$/
上面没有所有的表达式,但我试图展示我是如何做到的。
一个选项是使用一组正前瞻使用 negated character classes:
^(?=[^A-Z]*[A-Z])(?=[^a-z]*[a-z])(?=[^0-9]*[0-9])(?!.*(.))(?=[a-zA-Z0-9]*[^A-Za-z0-9\s])\S{8,}$
将匹配:
^
字符串开头
(?=[^A-Z]*[A-Z])
断言大写
(?=[^a-z]*[a-z])
断言小写
(?=[^0-9]*[0-9])
断言数字
(?!.*(.))
断言没有连续的字符
(?=[a-zA-Z0-9]*[^A-Za-z0-9\s])
声明未列出的字符,包括空白字符(假设不允许)
\S{8,}
匹配非空白字符 8 次以上
$
字符串结束
请注意,允许的字符 \S
是广泛匹配,您可以使用字符 class.
指定允许匹配的内容
我有以下各个正则表达式,我想使用 AND 条件将它们组合起来,我正在使用它们来验证密码
.[A-Z]+. - 验证大写(最少一个字母大写)
.[0-9]+. - 验证号码(至少一个号码)
.[a-z]+. - 验证小写(最少一个小写)
.{8,} - 验证最小字符 8
.[^A-Za-z0-9]. - 验证特殊字符(至少一个特殊字符)
(.)\1 - 验证连续字符(无连续字符)
现在我正在分别验证每个字符,但我只想在一个函数中完成
我尝试了以下组合方式
/^((.))(.[A-Z]+.)(.[a-z]+.)(.[0-9]+.)(.[^A-Za-z0-9].).*$/
上面没有所有的表达式,但我试图展示我是如何做到的。
一个选项是使用一组正前瞻使用 negated character classes:
^(?=[^A-Z]*[A-Z])(?=[^a-z]*[a-z])(?=[^0-9]*[0-9])(?!.*(.))(?=[a-zA-Z0-9]*[^A-Za-z0-9\s])\S{8,}$
将匹配:
^
字符串开头(?=[^A-Z]*[A-Z])
断言大写(?=[^a-z]*[a-z])
断言小写(?=[^0-9]*[0-9])
断言数字(?!.*(.))
断言没有连续的字符(?=[a-zA-Z0-9]*[^A-Za-z0-9\s])
声明未列出的字符,包括空白字符(假设不允许)\S{8,}
匹配非空白字符 8 次以上$
字符串结束
请注意,允许的字符 \S
是广泛匹配,您可以使用字符 class.