Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何创建(C#)正则表达式规则_C#_Regex_C# 4.0 - Fatal编程技术网

如何创建(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}”
      现在你应该可以很简单地把have子句组合成any1,但是我不知道是否可能有一个正则表达式,逻辑上是“不是这个,而是这个,这个或这个”。 也许其他海报也能做到

      如果你不确定你的正则表达式,我可以推荐一个非常有用的免费正则表达式探索工具。谷歌就可以了

      来自记忆

      • 没有大写的
        “^[^A-Z]*$”
      • 以字母开头“^[A-Za-z].*”
      • 至少有1位
        “*\d+.*”
      • 最多有8个字母数字或@字符
        “[A-Za-z0-9@\$]{,8}”
      现在你应该可以很简单地把have子句组合成any1,但是我不知道是否可能有一个正则表达式,逻辑上是“不是这个,而是这个,这个或这个”。 也许其他海报也能做到

      如果你不确定你的正则表达式,我可以推荐一个非常有用的免费正则表达式探索工具。谷歌就可以了

      第一次在谷歌大受欢迎

      给了我们

      ^.*(?=.{10,})(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[@#$%^&+=]).*$
      
      哪个

      • 必须至少包含10个字符
      • 必须至少包含一个小写字母、一个大写字母、一个数字和一个特殊字符
      • 有效的特殊字符为-@$%^&+=
      现在只需要调整8个字符(最少),在开头和结尾没有数字,没有大写字母和以字母开头

      ^.*(?=.{8,})(?=.*\d)(?=.*[a-z])(?=.*[@#$%^&+=])([a-z][^0-9A-Z])[^A-Z]*[^0-9A-Z]$
      
      这是在网上测试的

      我建议您阅读第一篇文章,了解它是如何构造的(我学到了很多),并使用第二个链接(尽管还有许多其他在线regex测试人员)来使用正则表达式,而不必一直编译代码。

      第一次在google中使用

      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个字符(最少),在开头和结尾没有数字,没有大写字母和以字母开头

      ^.*(?=.{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@\$]$”

      编辑:我已经调整了代码。其中一个测试是
      aa1@aaaa
      如道格拉斯所指出,当它应该成功时,被标记为预期失败

      我已经验证了Douglas提供的正则表达式同样有效,它的长度也更短


      不是这样的答案,但这里有一个快速测试装置。我使用了正则表达式和@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@\$]$”

      编辑:我已经调整了代码。其中一个测试是
      aa1@aaaa
      如道格拉斯所指出,当它应该成功时,被标记为预期失败

      我已经验证了Douglas提供的正则表达式同样有效,它的长度也更短


      不是这样的答案,但这里有一个快速测试装置。我使用了正则表达式和@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之间