1

反応ネイティブのアプリに数値型の入力フィールドがあります。

このフィールドはコンマ番号のみを受け入れる必要があります。

だから私は使用しました: keyboardType="numeric"

ただし、この場合でもポイント、スペース、ライン (-) などの文字を使用できます。間違った数値データを入力する際のエラーに加えて。

正しい形式は次のとおりです。nnn,ddd

手伝って頂けますか?

let a = [
  "0",//0
  "0,5",//0,5
  "0,,5",//0,5
  "0.5",//0,5
  "0..5",//0,5
  ".0.5",//0,5
  ",0,5",//0,5
  "0.-5,",//0,5
  "0,-5.",//0,5
  "0,5-..",//0,5
  "0,,,- 5,,",//0,5
  "0...5-  ",//0,5,
  "0,5,"//0.5,
];

a.map(el=> {
  const e = el
  .replaceAll('.', ',')
  .replace(/[^0-9,]/g, '')
  console.log(e)
});

編集:

let a = [
  "0",//0
  "0,5",//0,5
  "0,,5",//0,5
  "0.5",//0,5
  "0..5",//0,5
  ".0.5",//0,5
  ",0,5",//0,5
  "0.-5,",//0,5
  "0,-5.",//0,5
  "0,5-..",//0,5
  "0,,,- 5,,",//0,5
  "0...5-  ",//0,5,
  
  "00,5",//0,5
  "00,05",//0,05
  "05,512",//5,51
  "00,5123",//0,51
  ",05",//0,05
  "00,,5",//0,5
  "21,"//21
];
  • "00,5",//0,5 "00,05",//0,05 のように、先行ゼロを 2 つ使用することはできません。
  • 最初にコンマを付けずに数字が続く場合は、先頭にゼロがあってはなりません: "05,512"//5,51
  • カンマの後には 2 桁の数字のみが必要です "00,5123"//0,51
  • 最後に、このケースは無視してもいいと思います。フィールドが空の場合はコンマまたはポイントが入力され、最初にゼロが入力され、その後にコンマが続きます: ",05",//0,05
4

3 に答える 3