📜  用于密码验证的Lex代码

📅  最后修改于: 2021-06-28 15:13:51             🧑  作者: Mango

Lex是一个生成词法分析器的计算机程序,由Mike Lesk和Eric Schmidt编写。 Lex读取指定词法分析器的输入流,并输出以C编程语言实现lex的源代码。

问题:我们必须验证密码。
如果密码包含以下内容,则该密码是正确的:

  1. Atleast 1大写字符
  2. Atleast 1小写字符
  3. 至少1位数字
  4. Atleast 1特殊字符
  5. 最少8个字符

例子:

Input: Geeksforgeeks
Output: INVALID

Input: Geeks@12
Output: VALID 

注:这句话可以由小写字符,大写字符和数字。

以下是计算字数的实现。

%{ 
    #include 
    #include 
    int a = 0, b=0, c=0, d=0, l=0; 
%} 
    
  
%% 
[a-z]    {a++;l++;}
[A-Z]    {b++;l++;}
[0-9]    {c++;l++;}
[$&+, :;=?@#|'<>.-^*()%!] {d++;l++;}
.  ;
%% 
    
int yywrap(void){} 
    
int main() 
{    
    // The function that starts the analysis 
    yylex(); 
      if(a>0 && b>0 && c>0 && d>0 && l>=8)
    printf("VALID\n");
    else
        printf("INVALID\n");
    return 0; 
} 

输出: