javascript と jQuery で使用するには、12 12.2 1236.32 123.333 と +12.00 または -12.00 または ...123.123... のような 10 進数/浮動小数点数の正規表現が必要です。ありがとうございました。
8 に答える
オプションで、先頭の + または - に一致し、その後に 1 つまたは複数の 10 進数が続きます。オプションで、その後に小数点と 1 つまたは複数の 10 進数が続き、文字列の最後まで:
/^[+-]?\d+(\.\d+)?$/
正しい式は次のようになります。
[+-]?([0-9]*[.])?[0-9]+
これは以下に適用されます:
+1
+1.
+.1
+0.1
1
1.
.1
0.1
Python の例を次に示します。
import re
#print if found
print(bool(re.search(r'[+-]?([0-9]*[.])?[0-9]+', '1.0')))
#print result
print(re.search(r'[+-]?([0-9]*[.])?[0-9]+', '1.0').group(0))
出力:
True
1.0
Mac を使用している場合は、コマンド ラインでテストできます。
python -c "import re; print(bool(re.search(r'[+-]?([0-9]*[.])?[0-9]+', '1.0')))"
python -c "import re; print(re.search(r'[+-]?([0-9]*[.])?[0-9]+', '1.0').group(0))"
isNaN を使用して、テキストの検証と、1 つの小数点の検証のみを確認できます。
var val = $('#textbox').val();
var floatValues = /[+-]?([0-9]*[.])?[0-9]+/;
if (val.match(floatValues) && !isNaN(val)) {
// your function
}
Paulpro と lbsweek の回答により、次のことがわかりました。
re=/^[+-]?(?:\d*\.)?\d+$/;
>> /^[+-]?(?:\d*\.)?\d+$/
re.exec("1")
>> Array [ "1" ]
re.exec("1.5")
>> Array [ "1.5" ]
re.exec("-1")
>> Array [ "-1" ]
re.exec("-1.5")
>> Array [ "-1.5" ]
re.exec(".5")
>> Array [ ".5" ]
re.exec("")
>> null
re.exec("qsdq")
>> null
初めての方へ:
E 科学表記(スペースなし)の RegExp を作成しました。
const floatR = /^([+-]?(?:[0-9]+(?:\.[0-9]+)?|\.[0-9]+)(?:[eE][+-]?[0-9]+)?)$/;
let str = "-2.3E23";
let m = floatR.exec(str);
parseFloat(m[1]); //=> -2.3e+23
Unicode 番号を使用したい場合は、RegExp でall[0-9]
を置き換えることができます。また、RegExp の最後に
Unicode フラグを追加することもできます。\d
u
パターンをよりよく理解するには、https://regexper.com/を参照してください。
RegExp を作成するには、https://regex101.com/をお勧めします。
編集: RegExp をカラーで表示するための別のサイトを見つけました: https://jex.im/regulex/。
編集 2: op は特に RegExp を要求しますが、JS で文字列を直接確認できます。
const isNum = (num)=>!Number.isNaN(Number(num));
isNum("123.12345678E+3");//=> true
isNum("80F");//=> false
NaN
文字列を数値(または)に変換してから、Number()
そうでないかどうかを確認NaN
します!Number.isNaN()