gpt4 book ai didi

c# - 字符串格式检查给出意外结果(正则表达式)

转载 作者:太空宇宙 更新时间:2023-11-03 20:58:35 25 4
gpt4 key购买 nike

我想检查一个字符串的格式,它是 ABC-nnn,其中 ABC 代表大写字母(英文)。 nnn 表示三位数,例如 123001012 一个完整的例子是 FBI- 026。为此,我使用了 regex,下面是我的代码。

public bool IsSubstringMatchingFormat(int numberOfLettersBeforeHyphen, int numberOfNumbersAfterHyphen, string stringToMatch)
{
Regex regex = new Regex($@"^[A-Z]{numberOfLettersBeforeHyphen}-\d{numberOfNumbersAfterHyphen}");
return regex.IsMatch(stringToMatch);
}

我称它为 IsSubstringMatchingFormat(3, 3, "SMB-123") 但它返回 false。请提供您的见解。

最佳答案

您是否真的检查过传递给正则表达式的字符串是什么样的?即评估 $@"^[A-Z]{numberOfLettersBeforeHyphen}-\d{numberOfNumbersAfterHyphen}" 并查看这是否是您想要的正则表达式?我可以告诉你,这不是因为它最终会成为 ^[A-Z]3-\d3 而不是你想要的。

我想你会想要的是:

$@"^[A-Z]{{{numberOfLettersBeforeHyphen}}}-\d{{{numberOfNumbersAfterHyphen}}}"

这会将转义的花括号添加回您的正则表达式以提供:

^[A-Z]{3}-\d{3}

使用 String.Format 的等价物是:

String.Format(
@"^[A-Z]{{{0}}}-\d{{{1}}}",
numberOfLettersBeforeHyphen,
numberOfLettersAfterHyphen);

关于c# - 字符串格式检查给出意外结果(正则表达式),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47939384/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com