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'视为一个特例。但是,当我的表达式没有检测器时,它怎么能挂起来呢?它应该说绳子错了,我不知道我哪里错了。请有人告诉我。

C#正则表达式不考虑换行

我认为问题出在正则表达式模式上。您尝试匹配的元素是否总是字母后面跟着数字,并用逗号和可选的空格分隔?如果是这样的话,这可能会给你想要的(尽管它可能比这更精致);^([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]*)*$");