2012-12-12 3 views
2

다음 정규 표현식을 음수로 확장하고 싶습니다. 정규 표현을 음수로 확장하십시오.

this.value = this.value.replace(/[^0-9\.]/g, ""); 

나는 ("", /[^-0-9.]/g)이 같은 일을 빼기 기호를 추가하는 시도하지만이 마이너스 기호는 숫자에 어디를 입력 할 수 있습니다. 나는 숫자의 시작 부분에 오직 하나의 마이너스 기호 발생만을 허용하려고합니다. 나중의 발생은 무시되어야한다.

도와주세요.

답변

6

어, 모든 숫자가 아닌 문자를 대체하는 것은 그 조금 어렵게 - 그것은 "부정"정규식 같다. [^0-9.] 일치 할 것 - - 내가 생각 해낸 것은 마이너스을 방지하는 negative lookahead이다는 문자열의 시작 부분에있는 경우 일치에 beeing에서 (A start anchor 사용) :

….replace(/(?!^-)[^0-9.]/g, "") 
+0

한 도트 만 허용하려면 어떻게 업데이트해야합니까? – bbodenmiller

+0

두 번째 단계에서 모든 수 많은 도트를 제거하는 것이 가장 간단합니다. 정규식을 업데이트하는 것은 너무 복잡해집니다. – Bergi

2

는 문자 클래스의 외부에서 대시를 넣어 :

this.value = this.value.replace(/^-?[^0-9\.]/g, ""); 
+0

OP는 (아마도 음수) 숫자의 일부가 될 수없는 모든 문자를 일치시키고 제거하려고합니다. – Bergi

4

왜 정규식? 방법에 대해 :

이 또한해야
var temp = parseFloat(this.value) 
this.value = isNaN(temp) ? "" : temp; 

작업 :

var temp = +this.value; 
this.value = isNaN(temp) ? "" : temp; 
+1

+1 좋은 아이디어지만 OP는'parseFloat'을 필요로합니다. – Bergi

0

당신에 의해 제공의 정규식은 "100 + 200 = 300"을 변환합니다으로 양수 자체의 결함에 "100200300" .

시도해 보시기 바랍니다. someString.match (/ -? [\ d] +.? [\ d] * /);

관련 문제