您的问题似乎不完整,您是想询问关于C语言编程的某个具体问题吗?比如C语言的语法、编程技巧、项目开发等。请提供更具体的信息,这样我才能给出更准确的回答。

摘要:手撸基于ASCII码表的校验密码方法。
附赠正则表达式
密码规则:包含 数字,大小写,特殊字符^%&',;=?$',长度8~20位。
群聊 群友A问:有没有方法可以判断字符串里面带不带标点符号啊? 群友B问:需求是什么? 群友A说:想要密码校验,网上大部分都是正则。 群友A说:密码规则是包含大小写和数字、特殊符号,还有Length>=8。 我直接在LINQPad手撸基于ASCII码表的校验密码方法发到群里。 该实现逻辑,几乎任何编程语言都通用,可借鉴。 工具类 public static class Utils { public static bool ValidPassword(string password, int minLength = 8, int maxLength = 20) { if (string.IsNullOrEmpty(password) || password.Length < minLength || password.Length > maxLength) { return false; } bool hasLower = false; bool hasUpper = false; bool hasNumber = false; bool hasSymbol = false; foreach (ushort item in password) { if (item < 33 || item > 126) { return false; } if (item >= 48 && item <= 57) { hasNumber = true; continue; } if (item >= 65 && item <= 90) { hasUpper = true; continue; } if (item >= 97 && item <= 122) { hasLower = true; continue; } hasSymbol = true; } return hasLower && hasUpper && hasNumber && hasSymbol; } } 测试代码 class Program { static void Main(params string[] args) { TestValidPassword(); } static void TestValidPassword() { Console.WriteLine(Utils.ValidPassword("Abcd1234.!")); Console.WriteLine(Utils.ValidPassword("abcd1234.")); Console.WriteLine(Utils.ValidPassword("abcd12345")); Console.WriteLine(Utils.ValidPassword("abced!.-/*")); Console.WriteLine(Utils.ValidPassword("Abcd1234我")); } } 附赠正则表达式 密码规则:包含 数字,大小写,特殊字符^%&',;=?$\",长度8~20位。 其中x22是双引号"的转义。 ^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[^%&',;=?$\x22])[A-Za-z0-9^%&',;=?$\x22]{8,20}$ ASCII码表 ASCII 控制字符 (字符编码: 0-31) 在ASCII码表中,前32个字符是不能用于打印控制的编码,而是用于控制像打印机一样的外围设备。
阅读全文