[英]Javascript RegEx to c# RegEx
我一直在嘗試將以下RegEx用於c#和javascript。 它適用於javascript,但不適用於c#。
C#代碼
using System.IO;
using System;
using System.Text.RegularExpressions;
class Program
{
static void Main()
{
string strMacRegEx = @"/(?=.*\d)(?=.*[a-f])[\da-f]{12}/i";
string strName = "944a0c112129";
bool test = Regex.IsMatch(strName,strMacRegEx);
if(test)
{
Console.WriteLine("Pass");
}
else
{
Console.WriteLine("Fail"); // Returns Fail
}
}
}
JavaScript代碼
var test = /(?=.*\d)(?=.*[a-f])[\da-f]{12}/i;
alert(test .test('944A0C112129'));//Returns true
任何人也可以幫助我如何使上述regEx適用於c#嗎? 請幫助我了解此正則表達式的作用。 我對正則表達式非常陌生,因此無法真正理解為什么此特定正則表達式適用於
使用類構造函數創建模式。 (我不太熟悉C#)
string pattern = @"(?=.*\d)(?=.*[a-f])[\da-f]{12}";
RegexOptions options = RegexOptions.IgnoreCase;
Regex myPattern = new Regex(pattern, options);
然后,使用IsMatch
檢查,如下所示:
myPattern.IsMatch( "944a0c112129" );
關於模式的作用說明,您可以使用多個在線模式分析器,例如https://www.debuggex.com/或https://regex101.com/或http://regexper.com/以此類推。
刪除外部的/
和不區分大小寫的修飾符i
。 您可以使用RegexOptions.IgnoreCase
作為第三個參數來獲得不區分大小寫的匹配。
using System;
using System.Text.RegularExpressions;
class Program
{
static void Main(string[] args)
{
string strMacRegEx = @"(?=.*\d)(?=.*[a-f])[\da-f]{12}";
string strName = "944a0c112129";
bool test = Regex.IsMatch(strName, strMacRegEx, RegexOptions.IgnoreCase);
if (test)
{
Console.WriteLine("Pass");
}
else
{
Console.WriteLine("Fail"); // Returns Fail
}
}
}
您可以查看msdn快速參考以獲取詳細的正則表達式說明。
您的正則表達式包含兩個“先行斷言”。 (我認為您可以為測試用例刪除它們。)有趣的是[\\da-f]{12}
。 [\\ da-f]表示:匹配從a到f的任何十進制數字或任何字符。{12}表示:匹配12個數字或字符。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.