1

テキストボックスでユーザーからの入力を受け取るasp .net C#で書かれた小さなアプリケーションがあります.2つのボタンがあります.最初のボタンをクリックすると、2番目のテキストボックスにカルチャ固有の値が入力されます. 入力値をカルチャ en-ZA に設定しようとしています。

これがcsファイルの私のコードです、

protected override void InitializeCulture()
{
    System.Threading.Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("en-ZA");
    //base.InitializeCulture();
}

protected void btnCulture_Click(object sender, EventArgs e)
{
    decimal val = Convert.ToDecimal(txtValue.Text, System.Globalization.CultureInfo.CurrentCulture);
    txtConverted.Text = val.ToString("0,0.00");
}

ここで、2 回目のボタン クリックで、テキスト ボックスから値を読み取り、それを正規表現と一致させようとする JavaScript 関数を作成しました。

サンプル入力は 12345 であり、12 345.00 として解析され、正規表現が次のようになることを期待します --> ^[+-]?[\d\ ] .?\d ([][+-]?\d+ )?$ しかし、これは機能しません。デバッグ時に、値はテキスト ボックスから 12-345.00 として読み取られますが、「-」は正確にはハイフンではありません。オンラインで検索したところ、16 進数の空白である「\xa0」への参照がいくつか見つかりましたが、正規表現でこれを処理する方法が見つかりません。ここにJavaScript関数があります:

function regexTest() {                        
    var exp = new RegExp("^[+-]?[\\d\\ ]*\\.?\\d*([][+-]?\\d+)?$");

    var price = document.getElementById("txtConverted").value;

    if (price.match(exp)) {
        alert("pass");
        return true;
    }
    else {
        alert("fail");
        return false;
    }
}

編集:さらに理解するために、私はこのようなキャラクターを取得していました-

ここに画像の説明を入力

4

2 に答える 2

1

\xao文字クラスに(改行なしのスペース)を追加するだけ[\\d\\xao]です。
これは、10 進数の Unicode コード ポイント 160 の文字を表す 16 進数のエスケープ シーケンスです。

于 2013-03-28T17:26:58.873 に答える
1

以下の式を使用して、空白またはハイフンをキャッチできます。ただし、最初に string.Replace("-", "") を使用してハイフンを削除することをお勧めします。

var exp = new RegExp(@"^[+-]?[\d\s|-]*\.?\d*([][+-]?\d+)?$");

エスケープ文字を削除するための文字列の前の @。

于 2013-03-28T14:18:45.363 に答える