Closed2

Dartで数値のフォーマットチェックを行う正規表現を作る

N04hN04h

https://dartpad.dev/

イコール0になる数字は設定させないパターンがreg

void main() {
  final reg = RegExp(r'^[1-9]+[0-9]*(\.([1-9]*|[0-9]+[1-9]+))?$');
  final reg2 = RegExp(r'^[0-9]+(\.([1-9]*|[0-9]+[1-9]+))?$');

  print(reg.hasMatch('0')); // reg:false
  print(reg.hasMatch('1'));
  print(reg.hasMatch('9'));
  print(reg.hasMatch('10'));
  print(reg.hasMatch('99'));
  print(reg.hasMatch('123.0')); // false
  print(reg.hasMatch('123.00')); // false
  print(reg.hasMatch('123.1'));
  print(reg.hasMatch('123.09'));
  print(reg.hasMatch('123.001'));
  print(reg.hasMatch('123.0010')); // false
}

N04hN04h

FlutterのTextFormField#inputFormattersにて、
FilteringTextInputFormatter.digitsOnlyが用意されているが、整数だけなので、
小数点を含む形で対応できるよう設定するのに使う

TextFormField(
  keyboardType: const TextInputType.numberWithOptions(signed: true, decimal: true),
  inputFormatters: [FilteringTextInputFormatter.allow(RegExp(r'^[1-9]+[0-9]*(\.([1-9]*|[0-9]+[1-9]+))?$'))],
)
このスクラップは2023/05/22にクローズされました