簡體   English   中英

正則表達式IsMatch凍結

[英]Regex.IsMatch freezes

我有代碼:

string pattern =
            @"^(((://)?([A-Za-z0-9\.,\(\)\?\-!@#$%\^&\*=_\+\[\]\{\}\\""';><~\| \n\t:]+(/|://)?)*[A-Za-z0-9\.,\(\)\?\-!@#$%\^&\*=_\+\[\]\{\}\\""';><~\| \n\t]))$";

Regex regex = new Regex(pattern);

string message =
            "THINGS IN THIS MESSAGE ARE\r\n";

regex.IsMatch(message); // <- freezes

Console.ReadKey();

它凍結在regex.IsMatch上。 當我改變

message = "THINGS IN THIS MESSAGE ARE\n";

regex.IsMatch返回值。

為什么IsMatch凍結?

在上一節中添加\\r對我有用。 它應該是:

... | \n\r\t]))$

不:

... | \n\t]))$

測試:

string pattern =
    @"^(((://)?([A-Za-z0-9\.,\(\)\?\-!@#$%\^&\*=_\+\[\]\{\}\\""';><~\| \n\t:]+(/|://)?)*[A-Za-z0-9\.,\(\)\?\-!@#$%\^&\*=_\+\[\]\{\}\\""';><~\| \n\r\t]))$";
Regex regex = new Regex(pattern);
string message = "THINGS IN THIS MESSAGE ARE\r\n";
regex.IsMatch(message);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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