쉼표 (.) 뒤에 2 자리와 1 자리 만 허용하는 방법은 무엇입니까?

Nov 21 2020

합당하게 맞출 수 없다는 문제가 있습니다 RegExp. 내 목표는 쉼표 앞에 최대 3 자리를 허용하고 소수점이있는 경우에만 쉼표 뒤에 1 자리를 허용하는 것입니다. RegExp이 동작을 위해 어떤 또는 Regexes를 사용해야합니까?

원하는 허용 결과 : 000.0, 00.0, 0.0, 000, 00, 0

그게 현재 코드이지만 문제는 소수점없이 4 자리 숫자를 넣을 수 있다는 것입니다.

inputFormatters: [
  FilteringTextInputFormatter.allow(RegExp(r'^\d{1,3}\.?\d{0,1}')),
],

나는 이미 이것들을 스크롤했지만 그들은 나를 위해 작동하지 않습니다.

쉼표로 구분 된 2 자리 숫자와 3 자리 숫자 만 허용하는 Javascript Regex

최대 11 자리, 쉼표 1 개, 그 뒤 2 자리까지만 일치하는 Javascript 정규식

Jquery는 점 앞뒤에 부동 소수점 2 자리 만 허용합니다.

Flutter-TextFormField의 정규식

Flutter 입력에 두 개의 십진수 만 허용 하시겠습니까?

답변

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

입력 포맷터는 데이터를 시각적으로 형식화 하고 원하는 형식이 서로 포함 되기 때문에 여기에 해당되지 않습니다 . 당신은 사용해야 TextFormFieldvalidator안드레이의 검증 또는 사용 @ 속성 RegExp.

TextFormField(
  autoValidateMode: AutoValidateMode.always,
  validator: (value) {
    return RegEx(r'^\d{1,3}(\.\d)?$').hasMatch(value) ? null : 'Invalid value';
  },
)

RegExp는 여기서 일하고 있습니다 .