Use*_*r.1 2 c# text textbox verify
我的用户将在这样的地方输入一些字节.
黄色箭头指向他的输入,橙色箭头指向我的按钮

大约半小时后,我开始意识到这比我预期的要繁琐得多.
问题:我是否必须编写数百行代码以确保用户遵守规则?
他输入的语法规则是......
这三个规则可以像用户想要的那样重复.对于接收的字节,还有两个要处理的规则......
我得检查一下
?和*这里有些例子..
(首先编辑和更新,所有用户都不是相同的;语法检查器必须处理这个 ......)
来自智能好用户的漂亮正常整齐格式化输入...
01, FF, 3E, 27, 7F55, EE, 01, 0021, FE, 2B, 00, 1F37,  *, 18,  ?, 00, 3781,  *, 00,  *, FF, 91,  ?, 11,  ?, FF20, 31, 7F, 28,  *, FF47  4F, 20, 50, 4F, 4D, 45,  ?, 21来自愚蠢的坏用户的丑陋输入......
1,ff,3e,27,7f55,     EE,      1,    0021,Fe,    2b,0,    1f 37,*,18,?,00,3781,  *, 0,  *,Ff, 91,?,11,    ?,FF20, 31,    7f, 28,  *,   FF47, 4F,   20,   50,4F,4D,45,  ?,21(ps,愚蠢的坏用户有时会放入丑陋的尾随空格,有时会出现丑陋的前导空格)
好悲伤,这变得毛茸茸.我有三个嵌套函数,我已经无处可去了.我以为这将是一个20分钟的打字练习.
这问题以前是否已经解决了?
Visual Studio C#是否已包含仅要求以逗号分隔的十六进制字节的属性?
我错过了森林里那棵明显的树吗?
在StackOverflow上自动提出的类似问题并没有真正解决这个问题,这让我感到惊讶.当然,我不是第一个遇到这种烦恼的人.建议欢迎
您可以使用正则表达式来执行此操作:
String input = "01, FF, 3E, 27, 7F";
String pattern = @"^([0-9A-F]{2},\s?)*[0-9A-F]{2}$";
bool matches = Regex.IsMatch(input, pattern);
正则表达式^([0-9A-F]{2},\s?)*[0-9A-F]{2}$是
^  - 开始
[0-9A-F]  - 十六进制字符集
{2}  - 该组的两个字符
, - 只是逗号
\?- 可选空间
* - 重复0次或更多次
注意:如果要在逗号后强制使用空格,请使用 ^([0-9A-F]{2},\s)*[0-9A-F]{2}$
注意2:如果您只想允许一个字符并允许使用小写字母,请使用 ^([0-9A-Fa-f]{1,2},\s)*[0-9A-Fa-f]{1,2}$
| 归档时间: | 
 | 
| 查看次数: | 193 次 | 
| 最近记录: |