在我的身份验证网站中,我正在使用正则表达式来控制黑名单密码。 (列入黑名单的密码:12345678,123456789,棒球,足球)
我想添加新的正则表达式规则(使用边界),这将排除单词(黑名单密码)。我已经在StackOverflow上阅读了一些类似的问题,并试图用这样的方式声明它:
procedure CDS1.OnNewRecord(DataSet: TDataSet);
begin
DataSet.FieldByName('SomeField').AsString := ''; // this is NOT
// the same as leaving the field in its initial, NULL, state
end;
这个正则表达式与上面的单词不匹配,这是正确的。例如,带有字母,数字或特殊字符(“棒球”之前或之后)的“棒球”必须匹配。
但是“棒球!”与“!棒球”相反。你能给我一些建议怎么做吗?
答案 0 :(得分:0)
但是" 棒球!"不会与" !棒球" ...
相反
baseball!
无法匹配,因为您的模式在开头不允许baseball
(^
后跟baseball
的否定前瞻)。
!baseball
在对比中匹配,因为!
位于开头,而负向前瞻只在那里完成,而不是在后方。
人们可以考虑将.*
放在不同的地方,但这将导致一无所获
只需在前瞻中包含锚点^
$
:
(?!^(12345678|123456789|baseball|football|superman)$)^.*$
(事实上,我们甚至可以删除最初的^
)。