如何创建(C#)正则表达式规则
我们可以使用正则表达式来确定字符串是否遵循这些规则吗如何创建(C#)正则表达式规则,c#,regex,c#-4.0,C#,Regex,C# 4.0,我们可以使用正则表达式来确定字符串是否遵循这些规则吗 没有大写字母 以一封信开头 至少有1个数字不在开头和结尾 最多有8个字母数字 没有任何像@$$字符这样的符号(像!@$%^&*()-+)这样的符号) 来自内存 没有大写的“^[^A-Z]*$” 以字母开头“^[A-Za-z].*” 至少有1位“*\d+.*” 最多有8个字母数字或@字符“[A-Za-z0-9@\$]{,8}” 现在你应该可以很简单地把have子句组合成any1,但是我不知道是否可能有一个正则表达式,逻辑上是“不是这个,而
- 没有大写字母
- 以一封信开头
- 至少有1个数字不在开头和结尾
- 最多有8个字母数字
- 没有任何像@$$字符这样的符号(像!@$%^&*()-+)这样的符号)李>
- 来自内存
- 没有大写的
“^[^A-Z]*$”
- 以字母开头“^[A-Za-z].*”
- 至少有1位
“*\d+.*”
- 最多有8个字母数字或@字符
“[A-Za-z0-9@\$]{,8}”
- 没有大写的
“^[^A-Z]*$”
- 以字母开头“^[A-Za-z].*”
- 至少有1位
“*\d+.*”
- 最多有8个字母数字或@字符
“[A-Za-z0-9@\$]{,8}”
哪个^.*(?=.{10,})(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[@#$%^&+=]).*$
- 必须至少包含10个字符
- 必须至少包含一个小写字母、一个大写字母、一个数字和一个特殊字符
- 有效的特殊字符为-@$%^&+=
这是在网上测试的 我建议您阅读第一篇文章,了解它是如何构造的(我学到了很多),并使用第二个链接(尽管还有许多其他在线regex测试人员)来使用正则表达式,而不必一直编译代码。第一次在google中使用^.*(?=.{8,})(?=.*\d)(?=.*[a-z])(?=.*[@#$%^&+=])([a-z][^0-9A-Z])[^A-Z]*[^0-9A-Z]$
给了我们Regex regex = new Regex(@"^[a-z][a-z\d!@#$%\^&*()\-+]{0,7}$(?<=\d\D+)"); bool isValid = regex.IsMatch(password);
哪个^.*(?=.{10,})(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[@#$%^&+=]).*$
- 必须至少包含10个字符
- 必须至少包含一个小写字母、一个大写字母、一个数字和一个特殊字符
- 有效的特殊字符为-@$%^&+=
这是在网上测试的^.*(?=.{8,})(?=.*\d)(?=.*[a-z])(?=.*[@#$%^&+=])([a-z][^0-9A-Z])[^A-Z]*[^0-9A-Z]$
我建议您阅读第一篇文章,了解它是如何构造的(我学到了很多),并使用第二个链接(尽管还有许多其他在线正则表达式测试人员)来使用正则表达式,而不必一直编译代码。regex regex=new regex(@“^[a-z][a-z\d!@”\$%\^-+][0,7}$(?
regex regex=new regex(@)^[a-z][a-z\d!@$%\^&*()\-+]{0,7}$(?编辑:我已经用一个看起来有效的正则表达式更新了代码中的正则表达式
Regex regex = new Regex(@"^[a-z][a-z\d!@#$%\^&*()\-+]{0,7}$(?<=\d\D+)"); bool isValid = regex.IsMatch(password);
编辑:我已经调整了代码。其中一个测试是“^[a-z](?=[a-z0-9@\$]*[0-9][a-z0-9@\$]*)[a-z0-9@\$]{0,6}[a-z@\$]$”
如道格拉斯所指出,当它应该成功时,被标记为预期失败 我已经验证了Douglas提供的正则表达式同样有效,它的长度也更短aa1@aaaa
不是这样的答案,但这里有一个快速测试装置。我使用了正则表达式和@ShaunWilde答案中的测试 不幸的是,测试没有返回预期的结果:-|using System; using System.Collections.Generic; using System.Text.RegularExpressions; namespace StackOverflow.RegularExpressions { internal class Program { private static void Main(string[] args) { var validString = new Regex(@"^[a-z][a-z\d!@#$%\^&*()\-+]{0,7}$(?<=\d\D+)", RegexOptions.Compiled); var testsAndExpectedResults = new List<Tuple<string, bool>> { new Tuple<string, bool>("a1@aaaaa", true), new Tuple<string, bool>("a@1aaaaa", true), new Tuple<string, bool>("aa@aaaaa", false), new Tuple<string, bool>("a1@aaaaaaa", false), new Tuple<string, bool>("a1@aaaa", true), new Tuple<string, bool>("1a1@aaaa", false), new Tuple<string, bool>("aa1@aaaa", true), new Tuple<string, bool>("Aa1@aaaa", false), new Tuple<string, bool>("Aa1@aaaA", false), new Tuple<string, bool>("aA1@aaaA", false), new Tuple<string, bool>("#A@a1aaaaa", false) }; testsAndExpectedResults.ForEach(t => Console.WriteLine("With '{0}' expected {1}, got {2}", t.Item1, t.Item2, validString.IsMatch(t.Item1)) ); Console.ReadKey(); } } }
使用系统; 使用System.Collections.Generic; 使用System.Text.RegularExpressions; 命名空间StackOverflow.RegularExpressions { 内部课程计划 { 私有静态void Main(字符串[]args) { var有效串=
新的正则表达式(@“^[a-z][a-z\d!@$%\^&*()\-+]{0,7}$(?编辑:我已经用一个看起来有效的正则表达式更新了代码中的正则表达式
编辑:我已经调整了代码。其中一个测试是“^[a-z](?=[a-z0-9@\$]*[0-9][a-z0-9@\$]*)[a-z0-9@\$]{0,6}[a-z@\$]$”
如道格拉斯所指出,当它应该成功时,被标记为预期失败 我已经验证了Douglas提供的正则表达式同样有效,它的长度也更短aa1@aaaa
不是这样的答案,但这里有一个快速测试装置。我使用了正则表达式和@ShaunWilde答案中的测试 不幸的是,测试没有返回预期的结果:-|using System; using System.Collections.Generic; using System.Text.RegularExpressions; namespace StackOverflow.RegularExpressions { internal class Program { private static void Main(string[] args) { var validString = new Regex(@"^[a-z][a-z\d!@#$%\^&*()\-+]{0,7}$(?<=\d\D+)", RegexOptions.Compiled); var testsAndExpectedResults = new List<Tuple<string, bool>> { new Tuple<string, bool>("a1@aaaaa", true), new Tuple<string, bool>("a@1aaaaa", true), new Tuple<string, bool>("aa@aaaaa", false), new Tuple<string, bool>("a1@aaaaaaa", false), new Tuple<string, bool>("a1@aaaa", true), new Tuple<string, bool>("1a1@aaaa", false), new Tuple<string, bool>("aa1@aaaa", true), new Tuple<string, bool>("Aa1@aaaa", false), new Tuple<string, bool>("Aa1@aaaA", false), new Tuple<string, bool>("aA1@aaaA", false), new Tuple<string, bool>("#A@a1aaaaa", false) }; testsAndExpectedResults.ForEach(t => Console.WriteLine("With '{0}' expected {1}, got {2}", t.Item1, t.Item2, validString.IsMatch(t.Item1)) ); Console.ReadKey(); } } }
使用系统; 使用System.Collections.Generic; 使用System.Text.RegularExpressions; 命名空间StackOverflow.RegularExpressions { 内部课程计划 { 私有静态void Main(字符串[]args) { var有效串=
新的正则表达式(@“^[a-z][a-z\d!@$%\^&*()\-+]{0,7}$(?是的,这可以通过正则表达式来完成。还有其他问题吗?如果你想问一个符合上述规则的正则表达式,我想知道你尝试了什么,以及你遇到了什么问题。值是在字符之间还是在单独的行上?我想说这是为了密码验证。我认为是mu使用纯字符串方法(Contains、StartsWith等)更容易。是的,这可以通过正则表达式来完成。还有其他问题吗?如果你想问一个符合上述规则的正则表达式,我想知道你尝试了什么,以及在哪里卡住了。值是否在c之间 - 没有大写的