2010-05-18 3 views
1

내 번호 입력란에서 Javascript 유효성 검사를하고 있습니다. RegEx를 처음 사용하는 RegEx 사용자입니다. 숫자와 소수 만 입력하면되지만 쉼표는 입력하지 않아야합니다. (즉, 3600.00은 괜찮지 만 3,600.00은 그렇지 않습니다). 쉼표를 허용 된 문자로 제거하는 방법을 알아낼 수 없습니다. 어떤 도움을 주셔서 감사합니다. 감사!RegEx/Javascript 유효성 확인 : 쉼표를 유효한 문자로 사용하지 마십시오.

     var filter = /^([0-9])/; 

          if (!filter.test(txtItemAmount.value)) 
          { 
           msg += "Item amount must be a number.\n"; 
           txtItemAmount.focus 
          }  
+0

'.0'을 허용 하시겠습니까? 또는 '0'? 나는 적어도 하나의 숫자가 있어야한다. 그래서'.'는 그것 자체로 불법이어야한다, 그렇지? –

+0

예, "." 자체적으로 불법이며, 여러 번 ""불법입니다. 그러나 화폐이기 때문에 .05 또는 0.50 등 이어도 괜찮습니다. – SeanFlynn

+0

쉼표를 모두 제한하지 않고 무시하십시오. –

답변

1

을 할 수 있습니다, 소수 부분 정수 또는 정수, 당신은 드리려고

에 대한 등록 특급을 쓸 수 있습니다 "lookaround,"부정적인 lookbehind의 콤보와 전방 보면, 쉼표가있는 경우 경기를 실패 할 수 있어야 사용
/^(\.\d+)|(\d+(\.\d+)?)$/.test(value) 

or you can use parseFloat- 

if(parseFloat(value)+''===value) 
0

귀하의 필터를 사용하면 허용 번호, . 공간이

더 좋은 필터를 사용하면 . 한 번만 허용 [0-9 ]*[ .][0-9 ]* 될 것이라고 여기 [0-9. ]+ (같은 것을해야한다. 내가 모르는

자바 스크립트에서 정규식이므로 \으로 일부 문자를 보호해야 할 수도 있습니다.

0

시도해보십시오.

^(\d+(\.\d*)?)$ 

숫자가 하나 이상 (\d+) 인 다음 마침표가 0 개 이상인 ((\.\d*)?)을 찾습니다. 물음표는 마침표가 1 회 또는 0 회 반복되고 더 많은 숫자가 있어야 함을 의미합니다. 마침표 (.)는 정규 표현식의 특수 문자이므로 이스케이프 처리해야하므로 \ 앞에 표시됩니다.

자세한 내용은, 당신은 당신이 1보다 소수 덜 허용 할 경우를 살펴 here

+0

OP의 주석은'.05'는 유효하지만이 정규식과 일치하지 않는다고 말했습니다. 그것은 * 123 *과 일치합니다. 이것은 무효라고합니다 (그러나 OP는 그 것을 언급하지 않았습니다). –

-1

:

(?<!,)[0-9\.]*(?!,) 
+0

다른 많은 잘못된 입력들 중에서, 이것은', 123 '의'2'와 일치합니다. Lookarounds는 예상보다 조금 까다 롭고,이 경우 전혀 사용하지 않습니다. –

0
^(\d+\.?|\d*\.\d+)$ 

1, .2, 3., 4.5, 12345.67890 등이 허용됩니다. 1,000, 0.123,456, . 또는 1.2.3을 허용하지 않습니다.

관련 문제