2

私はC#と.NETを使用していますが、次のような正規表現があります

"\D"

これはすべての非数値文字に一致しますが、小数点(。)と負の符号(-)に一致させたくありません。正規表現でそれを行うにはどうすればよいですか?

だから私はクリスを試してみました、そしてそれが機能するようにいくつかの調整をしました:

(「オリジナル」という名前のTextBoxがあります)

 private void Original_TextChanged(object sender, EventArgs e) {
      Regex regex = new Regex(@"[^\d.-]", RegexOptions.IgnoreCase);
      Match match = regex.Match(Original.Text);
      if (match.Success) {
          Original.Text = regex.Replace(Original.Text, "");
          Original.SelectionStart = Original.TextLength;
      }
  }

これOriginal.SelectionStart = Original.TextLength;は、置き換えられるたびに選択範囲が最初に配置され、ユーザーには少し奇妙に見えるためです...

4

1 に答える 1

5

否定文字クラスを使用して、数字、 .、およびを除外できます-。このように 1 文字に一致する式は[^\d\.\-]. キャレットは、クラスが否定されていることを示します。

Regex.IsMatch("a f", @"^[^\d\.\-]+$"); // true
Regex.IsMatch("a_f", @"^[^\d\.\-]+$"); // true
Regex.IsMatch("a.f", @"^[^\d\.\-]+$"); // false
Regex.IsMatch("af-", @"^[^\d\.\-]+$"); // false
Regex.IsMatch("-42", @"^[^\d\.\-]+$"); // false
Regex.IsMatch("4.2", @"^[^\d\.\-]+$"); // false
于 2011-04-21T22:42:38.907 に答える