在 linqpad 中玩弄它,我似乎无法让它工作。这是我在这里关注的原始业务逻辑。请注意,有一个业务需求:
您有一个提供给 regex.Match 的字符串,它将返回第一个匹配项以与测试值进行比较。测试值将由用户输入为“12345”或“ABCDE”(五位字母数字字符串)。如果他们输入了六个或更多字符,或者使用了无效字符,则应删除这些字符以取最右边的 5 个字符。
void Main()
{
var r = @"^(?:[^\p{L}\\<>~=,-]|[A-Za-z0-9])+$";
var rg = new Regex(r);
var test = "J99-291-098";
var m = "91098";
rg.Match(test).Dump();
//(m == rg.Match(test).Captures[0].Value).Dump();
}
我在这里做错了什么?我想要捕获的只是J99291098
示例的(更具体地说是91098
测试字符串的,但如果你能告诉我,J99291908
我可以弄清楚如何只得到五个)。
我无法更改代码以使用 Regex.Replace,我无法更改代码以使用更多循环。如果仅使用 Regex.Match 不可能做到这一点,那么这就是答案,但我认为这是可以做到的。