編集: OK、あなたのコメントに従って更新された、単独のマイナス記号またはマイナス記号のない数字の組み合わせのいずれかに一致する式:
function IsNumeric(sText){
return /^(-|\d+)$/.test(sText);
}
正の数のみが必要で、先行ゼロを許可したくない場合は、次の正規表現を使用します。
/^(-|[1-9]\d*)$/
「正規表現を使用せずに検証を行う方法はありますか?」という質問に関しては、はい、JS が提供するさまざまな文字列および数値操作関数を使用してこれを実現する方法は無限にあります。しかし、正規表現は最も単純です。
関数はtrue
、指定された値に数字とプラス記号またはマイナス記号の任意の組み合わせ ( in などの繰り返しを含む) が含まれている場合に戻ります"---+++123"
。+
正規表現の終わりに向かっているということは、前の文字に 1 回以上一致することを意味することに注意してください。
おそらくあなたが望むのは、先頭にプラス記号またはマイナス記号を 1 つだけ使用し、その後に任意の数字の組み合わせを使用できる正規表現です。
function IsNumeric(sText){
return /^[-+]?\d+$/.test(sText);
}
?
は、直前の文字に 0 回または 1 回一致することを意味します。のように簡略化でき[0-9]
ます\d
。ステートメントは必要ないことに注意してください。結果を直接if
返すだけです。.test()
「-123」、「123」、「+123」は受け入れますが、「--123」は受け入れません。先頭にプラス記号を使用したくない場合は、正規表現を に変更して/^-?\d+$/
ください。
「例: 1,2,3,4,5,6,7,8,9,0 は true を返し、- も true を返します。」
あなたの例は、1桁または1つのマイナス記号のみが有効と見なされると言っているようです-もしそうなら、これを試してください:
function IsNumeric(sText){
return /^[\d-]$/.test(sText);
}