カンマ(。)の後に2桁と1桁のみを許可するにはどうすればよいですか?
Nov 21 2020
適切なものをRegExp
まとめることができないという問題があります。私の目標は、コンマの前に最大3桁を許可し、小数がある場合にのみ、コンマの後に1桁を許可することです。RegExp
この動作には、どちらまたは正規表現を使用する必要がありますか?
許可された結果:000.0、00.0、0.0、000、00、0
これが現在のコードですが、問題は、ここでも小数点なしで4桁を配置できることです。
inputFormatters: [
FilteringTextInputFormatter.allow(RegExp(r'^\d{1,3}\.?\d{0,1}')),
],
私はすでにこれらをスクロールしましたが、それらは私のために機能していません:
Javascript Regexは、2桁の数字と3桁の数字のみをコンマ区切りで許可します
最大11桁、1つのコンマ、およびその後の2桁のみに一致するJavascript正規表現
Jqueryでは、ドットの前後2桁のみをフロートできます
Flutter-TextFormFieldの正規表現
フラッター入力で10進数を2つだけ許可しますか?
回答
1 Andrej Nov 21 2020 at 21:33
私は正規表現の専門家ではないので、このヘルパー関数の使用を提案することしかできません。
bool match(String input) {
if (input.split('.').length == 1) {
// if there is no dot in the string
// returns true if the length is < 4
return (input.length < 4) ? true : false;
} else if (input.split('.').length > 1){
// if there is more than one dot in the string
return false;
} else {
// if there is a dot in the string
// returns true if there are < 4 digits before the dot and exactly 1 digit
// after the dot
return (input.split('.')[0].length < 4 && input.split('.')[1].length == 1)
? true
: false;
}
}
2 AkshitOstwal Nov 21 2020 at 21:27
RegExp(r'^\d{0,3}(\.\d{1})?$')
この正規表現を試してください
また、コンマで平均小数(。)を考え、小数の前に3桁、小数の後に1桁が必要だと考えています。
TextFormField(
autoValidateMode: AutoValidateMode.always,
validator: (value) {
return RegExp(r'^\d{0,3}(\.\d{1})?$').hasMatch(value) ? null : 'Invalid value';
},
)
1 BambinoUA Nov 22 2020 at 09:26
入力フォーマッタは、データを視覚的にフォーマットし、必要なフォーマットが相互に含まれているため、ここでは当てはまりません。@AndrejのバリデータでTextFormField
andvalidator
プロパティを使用するか、を使用する必要がありますRegExp
。
TextFormField(
autoValidateMode: AutoValidateMode.always,
validator: (value) {
return RegEx(r'^\d{1,3}(\.\d)?$').hasMatch(value) ? null : 'Invalid value';
},
)
RegExpはここで機能しています。