【发布时间】:2014-01-30 17:16:58
【问题描述】:
我正在处理一些遗留代码,找到了一个正则表达式,并希望有人可以为我剖析它:
((?=.*[^a-zA-Z])(?=.*[a-z])(?=.*[A-Z]).{8,})
我知道它在做什么,但不完全确定它是如何做到的。 “。”究竟是什么?满足条件后做什么?
我正在尝试添加一些代码来动态生成这个正则表达式。也就是说,如果一堆配置说密码可以做任何事情,我想返回一个正则表达式它将在 groovy 中为所有 .matches() 调用返回 true。 到目前为止,我刚刚完成字符串格式,所以创建的正则表达式是“(。)”,但是当使用matches()调用时返回false。
感谢您的帮助!
【问题讨论】:
-
.将精确匹配 1 个不是换行符的字符。如果你想允许任意数量的这些字符(包括空字符串),那么你需要.*,一个或多个.+,恰好x.{x},在x 和y 之间.{x,y},至少x @987654327 @ 或最多 x.{,x}。我建议访问 rexegg.com(下面我的答案中的链接)并浏览那里的信息;听起来如果你至少没有掌握正则表达式的基本句柄,你会经常回到这里。