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

本文关键字:正则表达式 这种情况下 我应该 | 更新日期: 2023-09-27 17:54:13

我有一个包含如下表达式的xml文件:-

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

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

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

但是这个XML文件是动态的。用户可以在列表中删除或添加不同的表达式。那么我怎么在这里使用正则表达式呢?有没有动态正则表达式之类的东西。请把这里的灯指给我看。

UPDATE:-我使用这些表达式来验证用户输入。因此,无论用户在框中输入什么,它都应该与列表中的任何表达式相匹配。

例如:-

如果用户输入

aaabc - 4567 trr

,那么它应该被验证,因为它与列表

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

中的第二个表达式匹配

嗯,

我从你的问题中推测:

A是字母A
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文件中存储的验证模式的格式,我可以为您提供更多帮助,但我只是盲目地写这个答案;)

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

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

分解:

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

其余部分以同样的方式工作。事物之间的连字符是用来匹配你期望输入中的连字符的。