gpt4 book ai didi

ios - 如何在 Swift 中组合正则表达式?

转载 作者:行者123 更新时间:2023-11-28 11:33:31 25 4
gpt4 key购买 nike

我有以下各个正则表达式,我想使用 AND 条件将它们组合起来,我正在使用它们来验证密码

.[A-Z]+. - 验证大写(最少一个字母大写)

.[0-9]+. - 验证数字(至少一个数字)

.[a-z]+. - 验证小写(最少一个小写)

.{8,} - 验证最小字符 8

.[^A-Za-z0-9]. - 验证特殊字符(至少一个特殊字符)

(.)\1 - 验证连续字符(无连续字符)

现在我正在分别验证每个字符,但我只想在一个函数中完成

我尝试了以下组合方式

/^((.)\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])(?!.*(.)\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 次以上
  • $ 字符串结束

Regex demo

请注意,对于允许的字符,\S 是广泛匹配,您可以使用字符类指定允许匹配的内容。

关于ios - 如何在 Swift 中组合正则表达式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56242750/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com