1

我正在尝试创建正则表达式以完全匹配一种字符串格式。字符串会是这样的

A3476,文本A
B5628,文字B
A9871,TextC

第一个字符应该是“A”或“B”,后面是整数,整数长度应该正好是 4 个字符,然后是“,”。逗号后只有三个单词会重复,它们是“TextA”或“TextB”或“TextB”。

我试过这个正则表达式

(A|B)(\d{4})(,)(TextA|TextB|TextC)

当我在整数中添加任何字母或整数长度大于 4 个字符时,字符串匹配应该会失败,但不会失败。

假设如果字符串是这样的

A653k7876,文字A

我得到这样的结果7876,TextA。结果是缺少字符“A”并从末尾读取整数。我的意图是它应该失败。

4

3 回答 3

1

你的正则表达式很好,除了你应该指出它应该在哪里开始和结束。^特殊字符表示行或字符串的开始和结束$。所以,试试这个:

^(A|B)(\d{4})(,)(TextA|TextB|TextC)$

确保RegexOptions.Multiline在创建Regex对象时指定以使其工作。

于 2013-03-21T10:18:21.450 回答
0

Use:

\b(A|B)(\d{4}),(TextA|TextB|TextC)\b

\b denotes the word boundary

You might find this link useful: C# Regex Cheat Sheet

于 2013-03-21T10:16:10.970 回答
0

看起来我们需要更多信息,就好像我完全按照您提供的那样使用字符串:

Console.WriteLine(Regex.IsMatch(@"A653k7876,TextA", @"(A|B)(\d{4})(,)(TextA|TextB|TextC)"));

输出 False - 如你所愿。

于 2013-03-21T11:08:02.390 回答