不考虑换行的C#正则表达式
我有一个正则表达式,如下所示:不考虑换行的C#正则表达式,c#,regex,C#,Regex,我有一个正则表达式,如下所示: Regex regExpForPurchaseIndent = new System.Text.RegularExpressions.Regex("^(([0-9]*[a-zA-Z]*)*[, ]*)*$";); 字符串“PRFA1223,JIBD122,\nPIHFU1343”使应用程序挂起在if语句中 if (!regExpForPurchaseIndent.IsMatch(newAsset.PurchaseIndent)) { //Print
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]*)*
没有意义您是否使用:
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]*)*$");
它不会挂起,它确实需要很长时间,因为你的量词非常嵌套。正则表达式还没有完成 您应该重构正则表达式,例如:
Regex regExpForPurchaseIndent = new System.Text.RegularExpressions.Regex("^[0-9]*[a-zA-Z]*(?:[, ]*[0-9]*[a-zA-Z]*)*$");
我认为问题在于你的正则表达式模式。您尝试匹配的元素是否总是以字母后跟数字,并以逗号和可选空格分隔?如果是这样,这可能会给你你想要的(尽管它可能比这更精致)<代码>^([a-zA-Z]*[0-9]*[,]*])*$
您可以使用正则表达式测试仪来帮助您,我喜欢这一个,我认为问题在于您的正则表达式模式。您尝试匹配的元素是否总是以字母后跟数字,并以逗号和可选空格分隔?如果是这样,这可能会给你你想要的(尽管它可能比这更精致)<代码>^([a-zA-Z]*[0-9]*[,]*])*$ 你可以使用正则表达式测试仪来帮助你,我喜欢这个