C#regex模式don';不在自己的代码中工作,但在可用的webtool中进行测试

C#regex模式don';不在自己的代码中工作,但在可用的webtool中进行测试,c#,regex,string,C#,Regex,String,这是我写的一段代码。 我在不同的webtool上测试了regex模式,它们在其中工作! 但在我的C代码中没有,你能告诉我为什么吗? 目标 (IsMatch应该在每个测试工具上返回true,但在本代码中它不会返回false) 在这里输入代码 //not original code splitted is variable so i give it a static value for the question purpose var splitted = "\n/87238/he.james.

这是我写的一段代码。 我在不同的webtool上测试了regex模式,它们在其中工作! 但在我的C代码中没有,你能告诉我为什么吗? 目标 (IsMatch应该在每个测试工具上返回true,但在本代码中它不会返回false)

在这里输入代码

 //not original code splitted is variable so i give it a static value for the question purpose
 var splitted = "\n/87238/he.james.lkjxzckj.jack.12357.asdasas.1231bfsg.wrew";

//original code
string final = "james-jack";

string finalRegex = "";

string[] regexSplit = final.Split(Convert.ToChar("-"));

finalRegex = String.Format(@"^(?=.*{0}).*$", String.Join(")(?=.*",regexSplit).ToLower());

Regex r = new Regex(finalRegex.ToLower(),RegexOptions.IgnoreCase);

 if (r.IsMatch(splitted.ToLower()))
 {
      //do something.....    
 }

正如@Wiktor Stribiżew所说的,如果你使用
RegexOptions.Singleline
它会起作用。在拆分的
变量中有新行,因此正则表达式需要匹配多行,或者需要删除新行
\n

Regex r = new Regex(finalRegex.ToLower(), RegexOptions.IgnoreCase | RegexOptions.Singleline);

为什么要使用
.ToLower()
?最后一个字符串是什么?正如在拆分后的[0]中所说的,在本例中,我给它一个静态值,但它可以包含大写字母,但如果我对regexOption.IgnorCase的使用是正确的,我不认为我必须使用它编辑的代码对我来说很好,
r.IsMatch()
返回
true
。我测试过的所有东西都返回了问题,但在我的应用程序中没有。通常,当人们说他们的正则表达式在C#中不起作用,并且在线工作时,他们忘记了修饰符、
RegexOptions.Singleline
RegexOptions.Multiline
,或者两者兼而有之。由于您没有提供任何重新编写问题的代码,因此您的问题暂时脱离主题。
RegexOptions。多行
也适用于给定的示例字符串。这取决于您是否要更改
^
的含义。