Unity利用正则表达式判断字符串是否满足要求

首先该方法属于C#,是C#提供的,不是unity提供的,但我使用这个是在unity中使用的,故此我将其归入unity笔记。

该方式可用于注册、登录等等需要用户输入的场景,用以判断字符串是否满足正则表达式的要求

首先介绍该API

//引入命名空间
using System.Text.RegularExpressions;

//如下API
public bool IsMatch(string input);
public bool IsMatch(string input, int startat);
public static bool IsMatch(string input, string pattern);
public static bool IsMatch(string input, string pattern, RegexOptions options);
public static bool IsMatch(string input, string pattern, RegexOptions options, TimeSpan matchTimeout);

这里开始介绍,大家可以看看官方的文档Regex.IsMatch 方法 (System.Text.RegularExpressions) | Microsoft Learn

以下是我的个人理解

首先是非静态的方法,需要配合Regex变量一起使用

//非静态
/*1*/
public bool IsMatch(string input);

/*
input是否满足自定义的Regex变量的正则表达式
满足返回true,否则false
*/

//使用

using System;
using System.Text.RegularExpressions;

public class Example
{
   public static void Main()
   {
      //需要检测的字符串
      string[] partNumbers= {
                              "1298-673-4192", 
                              "A08Z-931-468A", 
                              "_A90-123-129X", 
                              "12345-KKA-1230", 
                              "0919-2893-1256" 
                            };
      //自定义的Regex检测规则
      Regex rgx = new Regex(@"^[a-zA-Z0-9]\d{2}[a-zA-Z0-9](-\d{3}){2}[A-Za-z0-9]$");

      foreach (string partNumber in partNumbers)
         Console.WriteLine("{0} {1} a valid part number.", 
                           partNumber, 
                           rgx.IsMatch(partNumber) ? "is" : "is not");
   }
}
// The example displays the following output:
//       1298-673-4192 is a valid part number.
//       A08Z-931-468A is a valid part number.
//       _A90-123-129X is not a valid part number.
//       12345-KKA-1230 is not a valid part number.
//       0919-2893-1256 is not a valid part number.


/*1*/
public bool IsMatch(string input, int startat);

/*
从input的startat位置开始检测其是否满足自定义的Regex变量的正则表达式
满足返回true,否则false
startat取值0-最大长度
*/

//使用
using System;
using System.Text.RegularExpressions;

public class Example
{
   public static void Main()
   {
      string[] partNumbers= { "Part Number: 1298-673-4192", "Part No: A08Z-931-468A", 
                              "_A90-123-129X", "123K-000-1230", 
                              "SKU: 0919-2893-1256" };
      Regex rgx = new Regex(@"[a-zA-Z0-9]\d{2}[a-zA-Z0-9](-\d{3}){2}[A-Za-z0-9]$");
      foreach (string partNumber in partNumbers)
      {
         //获取字符':'出现在字符串中的第一个位置
         int start = partNumber.IndexOf(':');
         if (start >= 0)
         {
            Console.WriteLine("{0} {1} a valid part number.", 
                              partNumber, 
                              rgx.IsMatch(partNumber, start) ? "is" : "is not");
         }
         else
         {
            Console.WriteLine("Cannot find starting position in {0}.", partNumber);
         }
      }
   }
}
// The example displays the following output:
//       Part Number: 1298-673-4192 is a valid part number.
//       Part No: A08Z-931-468A is a valid part number.
//       Cannot find starting position in _A90-123-129X.
//       Cannot find starting position in 123K-000-1230.
//       SKU: 0919-2893-1256 is not a valid part number.

静态的方法

//静态方法
public static bool IsMatch(string input, string pattern);

/*
input是否满足正则表达式pattern
满足返回true,否则false
*/

//使用
using System;
using System.Text.RegularExpressions;

public class Example
{
   public static void Main()
   {
      string[] partNumbers= { "1298-673-4192", "A08Z-931-468A", 
                              "_A90-123-129X", "12345-KKA-1230", 
                              "0919-2893-1256" };

      //正则表达式,特别注意@不能掉且要在""外面
      /*@ 是C# 中的字符串字面量转义符
         @ 用于将字符串字面量中的[和]转义为它们的字符值
        这样[a-zA-Z0-9]就变成了一个有效的正则表达式码。
        */
      string pattern = @"^[a-zA-Z0-9]\d{2}[a-zA-Z0-9](-\d{3}){2}[A-Za-z0-9]$";
      foreach (string partNumber in partNumbers)
         Console.WriteLine("{0} {1} a valid part number.", 
                           partNumber, 
                           Regex.IsMatch(partNumber, pattern) ? "is" : "is not");
   }
}
// The example displays the following output:
//       1298-673-4192 is a valid part number.
//       A08Z-931-468A is a valid part number.
//       _A90-123-129X is not a valid part number.
//       12345-KKA-1230 is not a valid part number.
//       0919-2893-1256 is not a valid part number.


public static bool IsMatch(string input, string pattern, RegexOptions options);


using System;
using System.Text.RegularExpressions;

public class Example
{
   public static void Main()
   {
      string[] partNumbers= { "1298-673-4192", "A08Z-931-468a", 
                              "_A90-123-129X", "12345-KKA-1230", 
                              "0919-2893-1256" };
      string pattern = @"^[A-Z0-9]\d{2}[A-Z0-9](-\d{3}){2}[A-Z0-9]$";
      foreach (string partNumber in partNumbers)
         Console.WriteLine("{0} {1} a valid part number.", 
                           partNumber, 
                           Regex.IsMatch(partNumber, pattern, RegexOptions.IgnoreCase) 
                                         ? "is" : "is not");
   }
}
// The example displays the following output:
//       1298-673-4192 is a valid part number.
//       A08Z-931-468a is a valid part number.
//       _A90-123-129X is not a valid part number.
//       12345-KKA-1230 is not a valid part number.
//       0919-2893-1256 is not a valid part number.


public static bool IsMatch(string input, string pattern, RegexOptions options, TimeSpan matchTimeout);


using System;
using System.Text.RegularExpressions;

public class Example
{
   public static void Main()
   {
      string[] partNumbers= { "1298-673-4192", "A08Z-931-468a", 
                              "_A90-123-129X", "12345-KKA-1230", 
                              "0919-2893-1256" };
      string pattern = @"^[A-Z0-9]\d{2}[A-Z0-9](-\d{3}){2}[A-Z0-9]$";
      foreach (string partNumber in partNumbers)
         try {
            Console.WriteLine("{0} {1} a valid part number.", 
                              partNumber, 
                              Regex.IsMatch(partNumber, pattern, RegexOptions.IgnoreCase) 
                                            ? "is" : "is not", TimeSpan.FromMilliseconds(500));
         }
         catch (RegexMatchTimeoutException e) {
            Console.WriteLine("Timeout after {0} seconds matching {1}.",
                              e.MatchTimeout, e.Input);
         }
   }
}
// The example displays the following output:
//       1298-673-4192 is a valid part number.
//       A08Z-931-468a is a valid part number.
//       _A90-123-129X is not a valid part number.
//       12345-KKA-1230 is not a valid part number.
//       0919-2893-1256 is not a valid part number.

正则表达式的选项 - .NET | Microsoft Learnicon-default.png?t=N7T8https://learn.microsoft.com/zh-cn/dotnet/standard/base-types/regular-expression-options

TimeSpan 结构 (System) | Microsoft Learnicon-default.png?t=N7T8https://learn.microsoft.com/zh-cn/dotnet/api/system.timespan?view=net-8.0

C# 正则表达式 | 菜鸟教程 (runoob.com)icon-default.png?t=N7T8https://www.runoob.com/csharp/csharp-regular-expressions.html上面是一些网站,详细介绍了一些细节,我在这不过多赘述。

正则表达式(Regular Expression)是一种用于匹配和处理文本的强大工具,它在很多编程语言中都有广泛应用,包括Unity。在Unity中,可以使用正则表达式来进行字符串的匹配、替换、提取等操作。 Unity中使用的正则表达式语法与其他编程语言中的语法基本相同,常见的用法包括: 1. 匹配字符串:使用正则表达式可以判断一个字符串是否符合某种模式。例如,可以使用正则表达式`"hello"`来匹配字符串是否包含"hello"这个单词。 2. 替换字符串:使用正则表达式可以将字符串中符合某种模式的部分替换为指定的内容。例如,可以使用正则表达式`"\\d+"`来匹配字符串中的数字,并将其替换为指定的内容。 3. 提取信息:使用正则表达式可以从字符串中提取出符合某种模式的部分。例如,可以使用正则表达式`"\\w+"`来提取字符串中的单词。 在Unity中,可以使用`System.Text.RegularExpressions.Regex`类来进行正则表达式的操作。该类提供了一系列静态方法,如`Match`、`Matches`、`Replace`等,用于执行正则表达式的匹配、替换等操作。 下面是一些相关问题: 1. Unity中如何使用正则表达式进行字符串匹配? 2. 如何在Unity中使用正则表达式进行字符串替换? 3. Unity中如何提取字符串中符合某种模式的部分? 4. 有没有一些常用的正则表达式示例在Unity中的应用场景? 5. Unity中的正则表达式是否支持大小写敏感? 6. 如何处理正则表达式中的特殊字符?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值