숫자와 소수점을 제외한 모든 것을 바꾸는 정규식


113

텍스트 또는 십진수로만 유지해야하는 텍스트 필드가 있습니다. 다음은 현재 숫자와 소수점을 제외한 모든 것을 대체하는 데 사용하는 코드입니다. 문제는 다른 모든 것을 식별하는 정규식을 알아낼 수 없다는 것입니다.

document.getElementById(target).value = newVal.replace(/\D[^\.]/g, "");

\ D는 잘 작동하지만 시도 (?!.), (?!\.), [^.], [^\.]했습니다.

숫자 나 소수를 제외한 모든 것을 긍정적으로 식별하는 정규식에 대한 제안이 있습니까?

도와 주셔서 감사합니다


숫자가 아닌 실제 숫자를 확인하려는 경우 : stackoverflow.com/questions/42328875/…
cregox

답변:


239

이것을 사용하십시오 :

document.getElementById(target).value = newVal.replace(/[^0-9.]/g, "");

1
@Hugo는 아무것도 허용하지 않습니다. 잠재적으로 더 많은 소수점을 포함 할 수있는 문자열을 전달하지 말고 먼저 사전 처리해야합니다. 문자열을 말하는 것은 모든 문자를 허용 것처럼 ...의
jave.web

3
그런 다음 parseFloat를 통해 반환 된 값을 실행합니다. 그러면 추가 소수점이 제거됩니다. 예를 들면parseFloat("46554.4655465.54654.545345.5") = 46554.4655465
사이먼

1
이것은 돈과 같이 이미 서식이 지정된 숫자를 계산 가능한 부동 소수점으로 변환하는 데 좋습니다.
lu1s

8

소수 부분 만 제거하는 방법은 다음과 같습니다.

number.replace(/(\.\d+)+/,'');

이것은 13.6667px를 13px로 변환합니다 (단위는 px 그대로 둡니다).


7

이 시도:

document.getElementById(target).value = newVal.replace(/^\d+(\.\d{0,2})?$/, "");


2
최고의 답변입니다. 10.000000 0.22 2.234 0.000을 제거하지만, 10.1, 10, 1 유지, 10.22
로버트 베이커

이 표현은 복잡해 보입니다. 어떻게 작동하는지 또는 정확히 무엇을 제거하는지 설명해 주시겠습니까?
Minderov

"5.12 руб"와 같은 키릴 문자 입력에는 작동하지 않습니다.
Minderov

4
"11111".replace (/ ^ \ d + (\. \ d {0,2})? $ /, "")-결과 빈 문자열
yAnTar

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.