簡體   English   中英

C#正則表達式不考慮換行

[英]C# regular expression not considering Line feed

我有一個正則表達式為:

Regex regExpForPurchaseIndent = new System.Text.RegularExpressions.Regex("^(([0-9]*[a-zA-Z]*)*[, ]*)*$";);

字符串"PRFA1223,JIBD122,\\nPIHFU1343"使應用程序掛在if語句上

if (!regExpForPurchaseIndent.IsMatch(newAsset.PurchaseIndent))
{
       //Print the string is not correct
}

現在我知道RegEx將'\\ n'視為特例。 但是,當我的表達式沒有'\\ n'檢測器時,如何將其掛起? 它應該說字符串是錯誤的,我無法弄清楚我要去哪里。 請有人讓我知道。

您是否使用:

string s = "PRFA1223,JIBD122,\nPIHFU1343";
OR
string s = @"PRFA1223,JIBD122,\nPIHFU1343";

請同時嘗試。

關於代碼掛起,我之前從未見過C#掛起,請提供更多代碼

也嘗試

if (Regex.IsMatch(newAsset.PurchaseIndent, @"^(([0-9]*[a-zA-Z]*)*[, ]*)*$"))

順便說一句, ([0-9]*[a-zA-Z]*)*沒有意義

它不會掛起,因為您的嵌套量詞的確需要很長時間。 正則表達式尚未完成。

您應該重構您的正則表達式,嘗試例如:

Regex regExpForPurchaseIndent = new System.Text.RegularExpressions.Regex("^[0-9]*[a-zA-Z]*(?:[, ]*[0-9]*[a-zA-Z]*)*$");

我認為問題是您的正則表達式模式。 您要嘗試匹配的元素是否總是帶有字母,后跟數字,並用逗號和可選的空格分隔? 如果是這樣,這可能會給您您想要的東西(盡管它可能會比現在更精致); ^([a-zA-Z]*[0-9]*[, ]*)*$

您可以使用正則表達式測試器來幫助您,我喜歡這個http://derekslager.com/blog/posts/2007/09/a-better-dotnet-regular-expression-tester.ashx

暫無
暫無

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

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