こんにちは、値が 170000 未満かどうかを確認するための小さな検証があります。これが私が試したことですが、いくつかの小さな問題があります。値の範囲は 0 ~ 170000 です
/^(?:[1-9]\d{0,4}|[1-6]\d{3}|170000)$/
誰かがこれを修正して説明してください。
こんにちは、値が 170000 未満かどうかを確認するための小さな検証があります。これが私が試したことですが、いくつかの小さな問題があります。値の範囲は 0 ~ 170000 です
/^(?:[1-9]\d{0,4}|[1-6]\d{3}|170000)$/
誰かがこれを修正して説明してください。
なぜ正規表現が必要なのですか?
if (value <= 170000 && value >= 0)
あなたの仕事を達成することはできませんか?
/^\D*(\d{1,5}|1[0-6]\d{4}|170000)\D*$/
これにより、文字列全体がチェックされます。それ以外の場合は、正規表現の境界を微調整する必要があります。
\b(\d{1,5})\b|\b([1][0123456]\d{4})\b|\b(170000)\b
説明:
\b(\d{1,5})\b
: 0 から 99999 までのすべての数字に一致\b([1][0123456]\d{3})\b
: 1 の後に 0 から 6 が続き、その後に任意の 4 桁 (100000 から 169999) が続く一致
\b(170000)\b
: マッチ 170000
可能であれば範囲検証に正規表現を使用することは避けるのが最善ですが、問題は正規表現セグメントの2番目にあると思います:
[1-9]\d{0,4}
[1-6]\d{3}
170000
最初のセグメントは 1 から 5 までの長さのすべての数値を処理し、2 番目のセグメントは 6 桁までの数値を処理する必要があります100000
(170000
これは 3 番目のセグメントで処理されます)。
ただし、4桁の数字のみを処理しているため(とにかく最初のセグメントで既に処理されています)、実際には1[0-6]\d{4}
.
つまり、/^(?:[1-9]\d{0,4}|1[0-6]\d{4}|170000)$/
.
これはそれを解決し、非常に簡単で、RegExpなしで解決しました:)検証のためにRegExpを投稿した他の人も彼らのおかげです。
Ext.apply(Ext.form.field.VTypes, {
// vtype validation function
msrp: function(val, field) {
if(val >= 0 && val <= 170000){
return true;
}else{
return bundle.getMsg('vl.locate.label.ntavalidmsrp');
}
return validMaxMSRPTest.test(val);
},
// vtype Text property: The error text to display when the validation function returns false
msrpText: bundle.getMsg('vl.locate.label.ntavalidmsrp')
});