在我的一个程序中;我想使用正则表达式和匹配语句,以确保用户正确地将个人的权重输入到文本框中,并确保以正确的格式输入。但是我不知道要在VB.Net中使用RegEx类来实现哪一个并且不是很有经验。
但是,我知道使用的正则表达式必须确保用户已按以下格式输入信息:
123lb或122223lb或987LB或23lB
“lb”之前使用的位数无关紧要,但“lb”部分必须不区分大小写。除了“lb”之外,RegEx还必须寻找其他字母。
例如,一些不应匹配的示例:
因此总的来说,正则表达式必须:
非常感谢任何帮助!
感谢您阅读并度过美好的一天!
答案 0 :(得分:2)
const serialize = (stat: IFileStat) => Object.keys(stat).reduce((result, name) => {
// console.log(result);
if (name === 'resource') {
return result = { ...stat, resource: stat[name].toString() };
} else if (name === 'children') {
return { ...result, ...{ children: stat[name].map(child => serialize(child as any)) } }
}
else {
return result
}
}, {});
或KeyPress
事件处理程序限制用户仅在文本框中放置数字。总是更好地防止用户输错。
如果你想允许不同的重量单位,上面的解决方案会有点小问题。在这种情况下,我会将文本框与" lb"交换。对于有效权重单位的列表框。通过这种方式,您可以放心地为下次计算获得一个数字和一个单位。
答案 1 :(得分:1)
加入我的茶,因为我认为到目前为止的建议可以考虑到.NET RegexOptions
,这使你有可能构建一个更简单的模式。
假设WeightTextBox
是用户输入他/她体重的文本框:
If Regex.IsMatch(WeightTextBox.Text, "^\d+LB$", RegexOptions.IgnoreCase) Then
'Correct input.
Else
'Invalid input.
MessageBox.Show("Invalid input!", "Error", MessageBoxButtons.OK, MessageBoxButtons.Error)
End If
模式说明:
^\d+LB$
^ => Match beginning of string (or line, if RegexOptions.Multiline is set).
\d+ => Match one or more numerical characters.
LB => Match "LB" (without quotes).
$ => Match end of string (or line, if RegexOptions.Multiline is set).
RegexOptions.IgnoreCase
使匹配不区分大小写,这意味着它也会匹配Lb
,lB
或lb
。
答案 2 :(得分:0)
[0-9]+[lL][bB]
可以做到这一点。
说明:
[0-9]+
匹配1个或更多数字
[lL]
匹配l或L
[bB]
匹配b或B