我想编写一个正则表达式,它将匹配由 8 个字符组成的任何单词,这些字符应该属于字符集:[A-Za-z0-9]。
但是,它们应该由 3 个字符集中的每个字符(大写、小写和数字)中的至少一个字符组成。
这是我正在使用的正则表达式:
^[a-zA-Z0-9]{8}$
但是,这将匹配以下示例:
09823983
language
mainMenu
但我想匹配这样的词:
uXk3mHy9
我怎样才能使用正则表达式来做到这一点?
我想编写一个正则表达式,它将匹配由 8 个字符组成的任何单词,这些字符应该属于字符集:[A-Za-z0-9]。
但是,它们应该由 3 个字符集中的每个字符(大写、小写和数字)中的至少一个字符组成。
这是我正在使用的正则表达式:
^[a-zA-Z0-9]{8}$
但是,这将匹配以下示例:
09823983
language
mainMenu
但我想匹配这样的词:
uXk3mHy9
我怎样才能使用正则表达式来做到这一点?
look-ahead
您可以在正则表达式前面使用三个s:
^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])[a-zA-Z0-9]{8}$
不要在一个正则表达式中完成所有操作。正则表达式不是所有解决方案都必须来自的神奇工具箱。
检查三种不同的条件,而不是将它们全部塞进一个正则表达式中。在 Perl 中,这将是:
$ok = ( $s =~ /^[a-zA-Z0-9]{8}$/ && $s =~ /[a-z]/ && $s =~ /[A-Z]/ && $s =~ /[0-9]/ );
你的意图是什么要清楚得多。