簡體   English   中英

Javascript RegEx到C#RegEx

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM