如何使用十六进制字符限制输入掩码范围

Posted

技术标签:

【中文标题】如何使用十六进制字符限制输入掩码范围【英文标题】:How to limit input mask range with hex characters 【发布时间】:2017-02-20 13:06:25 【问题描述】:

我正在尝试设置允许用户输入 MAC 地址的输入掩码,该地址由十六进制字符组成:0-9、A-F。

到目前为止我得到的是:

>AA\-AA\-AA\-AA\-AA\-AA

但这种格式允许输入所有字母字符。

问题是:

如何用十六进制字符限制输入掩码范围?

【问题讨论】:

输入掩码无法做到这一点。您将需要自定义代码 - 可能使用正则表达式。搜索那个。 @Gustav 谢谢!我认为有一种无需 VB 编码的方法,例如在字段属性中使用正则表达式。可惜。 【参考方案1】:

您无法使用输入掩码执行此操作,但您可以使用如下所示的验证规则属性。它会让他们输入他们想要的任何内容,但在满足您的规则之前不会让他们保存数据。

Not Like "*[!((a-f) or (0-9))]*"

【讨论】:

这条规则是不完整的......可以输入少于所需的字符串以及完全不正确的字符串。【参考方案2】:

未能找到适当的解决方案,我阅读了说明,并提出了以下建议;

限制输入任何以“#”开头的十六进制序列。即#FF01A2(粉色/紫色?)

警告 - 请注意,掩码和验证规则可能会在查看的数据和存储的数据之间产生歧义。以下规则存储 6 个字符而不是 7 个字符,不包括基础数据中的“#”符号。

输入掩码 - 自动显示井号并将所有后续输入限制为 6 个数字或字母的任意组合。 (">" 运算符将其后面的任何字母更改为大写。在井号之前加上反斜杠或将其括在引号中,使其成为文字。)

"#">AAAAAA\#>AAAAAA 都可以。

验证规则 - 仅将条目限制为 0-9 和 a-f。 (大小写由上面的输入掩码修改。由于上面的输入掩码将条目限制为 6 个字符,因此此处使用括号外的星号可避免此规则中的冗余。)

Not Like "*[!0-9A-F]*"

验证文本 - 可选但推荐,为用户提供一些上下文。

Must be in hex format: 0-9, A-F only!(将显示在标准消息框中。)

访问表字段属性 - 如下所示。

注意:我在网上看到了很多示例,其中包括使用“Is Null”、“OR”以及每个字符的单独规则 - 如果它们在全部。

【讨论】:

【参考方案3】:

我分两部分实现了这一点:

    >"#"AAAAAA;0;_输入掩码,这确保用户只能输入#(预填),然后是六个大写字符。 Like "[#][0-9,A-F][0-9,A-F][0-9,A-F][0-9,A-F][0-9,A-F][0-9,A-F]"验证规则,确保字段为#,然后是六个字符,即 0、1、2、3、4、5、6、7、8、9、A、 B、C、D、E、F。

这对我来说效果很好,不需要 VBA 代码。

【讨论】:

该规则唯一有效的部分是它限制输入任何数字和任何大写字母的 6 个字符...您仍然可以输入 G-Z - 别介意末尾的“G”提供的答案。 嗨 Tahwos,需要明确的是,以上内容不会阻止用户输入 G-Z,但如果提供了非十六进制值,它会停止将记录提交到数据库。然后,您可以在验证文本中添加一些内容,以向用户提供合理的错误消息。这应该可以满足大多数人和原始问题的海报的需求。 你测试过这个吗?它允许为我保存记录...直接从您编辑的代码块中复制/粘贴, 刚刚发现我的一些懒惰的复制! (我现在已经更正了)。 “#”必须用方括号 [] 括起来,这是因为 # 表示任何数字,除非您使用方括号。它也应该是“喜欢”而不是“不喜欢”!请尝试修改后,您应该会看到良好的效果。

以上是关于如何使用十六进制字符限制输入掩码范围的主要内容,如果未能解决你的问题,请参考以下文章

python课程设计笔记整数浮点数与字符串

华为OD机试 - N进制减法(Java) | 机试题+算法思路+考点+代码解析 2023

华为OD机试 - N进制减法(Java) | 机试题+算法思路+考点+代码解析 2023

将十进制字符串 IP 掩码转换为带有尾随零的无符号整数

进制转换(暑假每日一题 44)

lqb 基础练习 十六进制转八进制 (字符串进行进制转化)