1

テキストボックスに整数と浮動小数点数のみを入力できる正規表現があります。正規表現コード:-

("^[0-9]*(?:[.][0-9]*|)$");

ただし、ユーザーが入力された値の最初と最後に空白を入力すると、エラーが発生します。ユーザーが最初と最後のスペースをオプションとして許可するようにしたいので、以下のように正規表現を変更しましたが、機能しませんでした。

注:スペースはスペースまたはタブの場合があります。

テストケース:ユーザーは次のように入力できます。

"10","10.23"," 10","10 "," 10.23","10.23 "

任意の数のスペースを使用できます。

("^(?:\s)*[0-9]*(?:[.][0-9]*|)$")

私は正規表現の初心者なので、どんな助けでも大歓迎です。

ありがとうございました。

4

2 に答える 2

1

これを試して:

/^\s*[0-9]*(?:[.][0-9]*|)\s*$/;

それを繰り返すためにグループ内の単一のエンティティをラップする必要はありません、そして私はそれを機能させるためにあなたが欠けているものである最後に2番目のゼロ以上のスペースを追加しました。

注:RegExpオブジェクトの作成に使用するコードは投稿していませんが、投稿している場合はnew RegExp(string)、バックスラッシュを(2倍にして)エスケープすることを忘れないでください。

var r = new RegExp("^\\s*[0-9]*(?:[.][0-9]*|)\\s*$");

また、@ Blenderが示唆しているように、これは次のように簡略化できます。

/^\s*[0-9]*(?:\.[0-9]*)?\s*$/;

または、:\dの代わりに使用する[0-9]

/^\s*\d*(?:\.\d*)?\s*$/;
于 2012-10-19T05:10:13.317 に答える
0

正規表現は必ずしも必要ではありません!isNaN(Number(textboxvalue.trim()))。十分です。

それ以外の場合は、を試してください/^\s{0,}\d+\.{0,1}\d+\s{0,}$/。テスト:

var testvalues = ["10","10.23"," 10","10 "," 10.23","10.23 ","10.24.25"];
for (var i=0;i<testvalues.length;i+=1){
  console.log(/^\s{0,}\d+\.{0,1}\d+\s{0,}$/.test(testvalues[i]));
}
//=> 6 x true, 1 x false
于 2012-10-19T05:22:00.070 に答える