我想在数字和字母数字字符之间添加空格

时间:2012-11-27 09:19:37

标签: c#

当文本框发生变化时,我想在数字和字母数字字符之间添加一个空格。

例如

34 YT 567 *Allowed*
22 KL 2345 *Allowed*
22KL 2345 *Not Allowed*
22KL2345 *Not Allowed*
22 KL2345 *Not Allowed*

2 个答案:

答案 0 :(得分:2)

这将通过在必要时插入空格来修复不正确的值:

var correctedValue = Regex.Replace(
    incorrectValue,
    "(?<=[0-9])(?=[A-Za-z])|(?<=[A-Za-z])(?=[0-9])",
    " ");

如果您想警告用户而不是自动修复,可以使用相同的模式使用Regex.IsMatch检测不正确的值。

编辑:

Regex.IsMatch(MyTextBox.Text,
    "(?<=[0-9])(?=[A-Za-z])|(?<=[A-Za-z])(?=[0-9])|[^a-zA-Z0-9 ]")
如果用户在字母旁边输入数字,或者输入任何非字母数字(和非空格)字符,

将返回true

如果你想删除非字母数字字符和插入空格,你需要分两步完成;首先Regex.Replace使用模式[^a-zA-Z0-9 ],然后调用上面的Regex.Replace

答案 1 :(得分:1)

您可以使用RegEx轻松找到错误的输入。

Regex rgx = new RegEx("([0-9]+[a-z]|[A-Z]+)||([a-z]|[A-Z]+[0-9]+)");
if (rgx.IsMatch(MyTextBox.Text)
{
     //bad input
}
else
    //input was good.

正则表达式匹配一个或多个数字,后跟一个或多个字母,反之亦然(字母然后是数字)。