2

テキスト ボックスが変更されたら、数字と英数字の間に空白を追加します。

例えば

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

2 に答える 2

3

これにより、必要に応じてスペースを挿入して誤った値が修正されます。

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ユーザーが文字の隣に数字を入力するか、英数字以外 (およびスペース以外) の文字を入力すると、が返されます。

英数字以外の文字を削除してスペースを挿入する場合は、2 つの手順で行う必要があります。最初Regex.Replaceに patternを使用し[^a-zA-Z0-9 ]、次にRegex.Replace上記の呼び出しを使用します。

于 2012-11-27T09:35:36.947 に答える
2

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.

正規表現は、1つ以上の数値に一致し、その後に1つ以上の文字が直接続くか、またはその逆です(文字と数字の順)。

于 2012-11-27T09:30:22.403 に答える