谁能告诉我“?=”在使用正则表达式时的作用?这是我试图破译的代码片段示例:
password.matches("(?=.*\\d.*\\d.*)^[\\w]{8}.*$");
谢谢。
这是一个积极的前瞻性。在该特定表达式中,它表示您的密码必须至少包含两位数字 ( \d
)。
另请注意,前瞻不消耗输入,它只是一个断言。
例如,在您的正则表达式中,(?=.*\\d.*\\d.*)
前瞻password
部分[a-zA-Z_0-9]
(细绳。
这是一个前瞻:一个零宽度匹配,检查该位置是否跟在给定的表达式后面。
http://www.regular-expressions.info/lookaround.html
在您的场景中,您正在寻找一个字符串:
前瞻实际上并不是匹配的一部分。它的行为很像单词边界 ( \b
) 或字符串的开头 ( ^
)。