C# RegEx 仅在字符串中没有其他文本时替换匹配项

我有以下正则表达式模式:

@"^((\(?\+45\)?)?)(\s?\d{2}\s?\d{2}\s?\d{2}\s?\d{2})$/gm"

它应该替换字符串,例如:

  • 10203040

  • 10 20 30 40

  • +45 10 20 30 40

  • +4510203040

这是我的替换方法:

var text = "10 10 10 10";
text = Regex.Replace(text, @"^((\(?\+45\)?)?)(\s?\d{2}\s?\d{2}\s?\d{2}\s?\d{2})$/gm", "****");

上面的代码返回“****”哪个是对的。

var text = "10 10 10 10 10203040";
text = Regex.Replace(text, @"^((\(?\+45\)?)?)(\s?\d{2}\s?\d{2}\s?\d{2}\s?\d{2})$/gm", "****");

上面的代码不会替换任何文本,只是返回原始字符串 - 我需要此代码返回“**** ****”,因为我需要的数字出现了两次匹配。

我希望有人能帮助我 - 提前致谢:)


泛舟湖上清波郎朗
浏览 109回答 1
1回答

猛跑小猪

您已将正则表达式锚定到行的开头 (^) 和结尾 ($),因此它们只会在以下情况下执行替换:匹配的字符串是整行。删除锚点,它应该按预期工作。
打开App,查看更多内容
随时随地看视频慕课网APP