Мне нужно сделать переменную decimalCounter равной нулю всякий раз, когда есть выражение после операторов [+ \ * \\ -] - PullRequest
0 голосов
/ 10 марта 2019

Мне нужно делать переменную decimalCounter равной нулю всякий раз, когда есть выражение после операторов [+ * \ -], чтобы decimalCounter = 0 позволяло вводить десятичную дробь.

Но всякий раз, когда выражение типа 5.5 или \Обнаружено, что d +. \ d + не должно позволять добавлять больше десятичных знаков и изменять decimalCounter = 3.

В целом это означает, что если я ввел 4.4, мне не разрешат добавлять больше десятичных знаков, пока я не столкнусь с оператором, находяоператор должен изменить decimalCounter = 0, чтобы после него разрешалось использовать десятичную дробь, т. е. 3.4-4.7 * 55.3 в порядке, но 3.4.4-4.5.6 \ 2.3.4 НЕ разрешено.

Пожалуйста, посмотрите на этот код ипредложить изменения.Вот ссылка на полный код Codepen

if (e.target.id == "decimal") {
  decimalCounter++;
  if( /([+\*\\-])/g.test(this.state.calcString)){
  decimalCounter = 0; //PROBLEM
  let y=this.state.calcString.match(/([+\*\\-])/g)
   console.log(y,this.state.calcString,decimalCounter)
}else if( /(\d+\.\d+)/.test(this.state.calcString)){
  decimalCounter=3;
   let y=this.state.calcString.match(/(\d+\.\d+)/)
   console.log(y,this.state.calcString,decimalCounter)
}

} else {
  if( /(\d+|[+\*\\-])/g.test(this.state.calcString)){
  decimalCounter = 0; //PROBLEM
  let y=this.state.calcString.match(/(\d+|[+\*\\-])/g)
   console.log(y,this.state.calcString,decimalCounter)
}
}
...