C#正则表达式不考虑换行
本文关键字:换行 不考虑 正则表达式 | 更新日期: 2023-09-27 18:20:41
我有一个正则表达式:
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'视为一个特例。但是,当我的表达式没有检测器时,它怎么能挂起来呢?它应该说绳子错了,我不知道我哪里错了。请有人告诉我。
我认为问题出在正则表达式模式上。您尝试匹配的元素是否总是字母后面跟着数字,并用逗号和可选的空格分隔?如果是这样的话,这可能会给你想要的(尽管它可能比这更精致);^([a-zA-Z]*[0-9]*[, ]*)*$
?
你可以使用regex测试仪来帮助你,我喜欢这个http://derekslager.com/blog/posts/2007/09/a-better-dotnet-regular-expression-tester.ashx
是否使用:
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]*)*$");