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