2012-01-19 67 views
0

我有一個正則表達式爲:C#正則表達式不考慮換行

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'探測器時,它怎麼會掛起?它應該說,字符串是錯誤的,我無法確定我出錯的地方。 請有人讓我知道。

回答

1

你使用:

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]*)*沒有意義

1

它不掛,它確實需要很長時間,因爲你的量詞非常嵌套。正則表達式尚未完成。

你應該重構你的正則表達式,例如,這個:

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