在这种情况下我应该使用正则表达式吗?
本文关键字:正则表达式 这种情况下 我应该 | 更新日期: 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}
:前两项
其余部分以同样的方式工作。事物之间的连字符是用来匹配你期望输入中的连字符的。