我应该在这种情况下使用正则表达式吗?

时间:2011-05-01 02:21:23

标签: c# regex

我有一个包含某些表达式的xml文件: -

1. AAaaaaa-1111 
2. AAaaa-1111-aaa 
3. AA11111-11111 
4. AA111-111-111111

(AA静态文本)(aaaa-仅限任何字母)然后连字符(1111 - 仅限任何数字)

我在想我应该为这些写正则表达式我相信正则表达式应该是正确的方法。

但是这个XML文件是动态的。用户可以在列表中删除或添加不同的表达式。那么我如何在这里使用正则表达式?有没有动态正则表达式的东西。请告诉我这里的光。

更新: - 我正在使用这些表达式来验证用户输入。因此,无论用户输入哪个框,都应该与列表中的任何表达式匹配。

例如: -

如果用户输入

  

AAabc-4567-TRR

,那么它应该被验证,因为它与列表中的第二个表达式匹配

2 个答案:

答案 0 :(得分:2)

那么,

我从你的问题中假设:

AA字母 a是任何字母
1是任意数字

这是我看到AAabc-4567-trr匹配AAaaa-1111-aaa

的唯一方法

这是正确的吗?

如果是正确的,是的,您可以使用正则表达式。您需要做的是将您的模式转换为正则表达式模式。假设你有一个新的模式:

AAA-aaa-111

要获得将识别该模式的正则表达式,您所要做的就是将该模式转换为正则表达式模式。例如:

string xmlPattern = "AAA-aaa-111"
string regexPattern = xmlPattern.Replace("a", "[a-zA-Z]").Replace("1", @"\d");

修改
您应该在正则表达式中计算其他具有特殊含义的字符,并对它们进行正确的翻译/编码。也许对它们进行分类。例如,这些字符:

.$^

可以很容易地转换为正则表达式模式,只需用\编码它们,所以它们将成为:

\.\$\^,...

如果您可以指定存储在XML文件中的验证模式的格式,我可以帮助您多一点,但我只是将这种答案写成盲目的;)

答案 1 :(得分:0)

按特定顺序匹配某些字符集的正则表达式非常简单。例如,这将匹配#2(AAaaa-1111-aaa):

[A-Z]{2}[a-z]{3}-[0-9]{4}-[a-z]{3}

打破它:

  • [A-Z]:从A到Z的任何字符。所以任何字母,大写字符。
  • {2}:上一项中的两项。

其余部分以同样的方式运作。事物之间的连字符用于匹配预期输入中的连字符。