复杂屏蔽文本条目存储选项

本文关键字:存储 选项 本条 屏蔽 文本条 复杂 | 更新日期: 2023-09-27 18:28:20

奇数问题。我有一个潜在的解决方案,但我正在寻求改进。所有这些都与MSSQL/C#项目有关,因此,如果需要,请考虑该上下文中的内容。

制作一个表单,供用户输入银行账号。但我们合作的不同客户银行有不同的(奇怪的)要求。这个数字有13位长,但2,3位是未知的,需要用户输入。后面的10位数字为零填充,末尾的2或3个字符应显示给用户。基本上,疯子。特定于客户。其他一些客户对验证有各种各样的要求,我正试图用它来解决这些问题,所以我想要的是能够扩展到足以处理随机客户请求的东西。

因此,举个例子,某人可能拥有部分帐号1__0000123456。他们需要在哪里输入缺失的两位数字。但我们可以显示456。因此,希望将其放入一个显示1__000???456的屏蔽文本框中,只允许他们编辑__s

当然,所有这些配置信息都存储在数据库中。并不是所有人都会丢失数字。

到目前为止,我想出的最好的解决方案是用一些神奇的字符来存储偏数,以指定丢失的,可能是_。然后在其旁边存储一个Regex,用于验证和分组区域。但也用一些特殊的垃圾标记区域,比如"隐藏"。我想我可以把它编码在组名中,这很愚蠢,但这是我最好的想法。

所以,在数据库中,我可能有一个类似的记录:

Number            Validation
1__0000123456     ^1'd'd0*(?<h:Account Id>123)456$

因此,我们有一个数字(偏)和一个验证表达式。但这个验证表达式在一个命名的捕获组中有一些神奇的东西。":h"表示应隐藏该范围。所以,我可以隐藏随机范围,或者下一个疯狂客户想要的任何东西。

以上内容将显示为包含"1_0000???456"的屏蔽文本框,用户只能在其中输入第二个和第三个数字。旁边的文本可以描述用户需要输入的内容,即"帐户Id",即命名捕获组名称的剩余部分。

呃。这是个主意。不过,这感觉就像是对我们所珍视的一切的滥用。

[编辑]

因此,这并不能很好地解决问题,因为我当然无法在值有效之前匹配它:因此,在用户输入有效序列之前,我无法知道要隐藏或显示的范围。如果可以深入研究正则表达式的AST或其他什么。。。那将是整洁的。

复杂屏蔽文本条目存储选项

根据我的理解,你要求银行账户的方式是特定于银行的。为什么不先找银行?然后可以加载验证方法。

如果你不能要求用户选择银行(也许要求不允许你),我认为你唯一的选择是在用户输入银行账户时随时检查正确的验证器。