首先该方法属于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.
C# 正则表达式 | 菜鸟教程 (runoob.com)https://www.runoob.com/csharp/csharp-regular-expressions.html上面是一些网站,详细介绍了一些细节,我在这不过多赘述。