2011-04-14 2 views
1

숫자와 소수점을 제외한 모든 것을 대체하는 정규식 작업을 얻으려고합니다 (쉬운). 까다로운 부분 : 소수점은 선택 사항이지만, 존재하는 경우 추가 숫자에 따라 뒤따라야합니다.숫자 및 실제 <소수점을 제외한 모든 것을 대체하십시오.

그래서 :

.10 => 10 
10. => 10 
10.- => 10 
1.0 => 1.0 

나는 비트 :

감사합니다 "옵션 소수점 이후 옵션 소수점하지만 필수 수에 따라 번호를 제외하고"정의하는 방법을 아주 잘 모르겠어요!

+0

정규 표현식에이 _fun된다 (당신이 사용하는 정규식 구문은 다른 이스케이프가 필요할 수 있습니다.)하지만 난 강력하게 시간을 보내는 것이 좋습니다! 또는 두 가지는 기본을 공부합니다. 우선, 어떤 문자가 특별한지 알아야합니다. _ "메타 문자"_ 이스케이프해야합니다 (예 : 앞에 백 슬래시가 있고 규칙은 내부 및 외부 문자 클래스가 다릅니다). 훌륭한 온라인 자습서가 있습니다. : [www.regular-expressions.info] (http://www.regular-expressions.info/). 당신이 거기에서 보내는 시간은 그 자신을 여러 번 지불 할 것입니다. 행복한 regexing! – ridgerunner

+0

의견을 보내 주셔서 감사합니다. 정규 표현식은 실제로 전혀 새로운 것이 아니며 정규 표현식에 상당히 익숙하지만 녹슨 느낌이 들었으며 교체 문에 대한 패턴이 항상 부정확합니다. 환호 – Chris

답변

2

그것은이 같은 것입니다 :

\d+(\.\d+)? 

_

+0

감사합니다. 나는 JavaScript로 작업하고 있는데, 이것을 시도했다 :'string.replace (/ [^ \ d + (\. \ d +)]?/g, ''); 20.00. 20.00이됩니다. - 미안 해요. 항상 부정 된 패턴을 이해하는 데 어려움이 있습니다. – Chris

+0

아니요, 대괄호는 이와 같이 사용할 수 없습니다! 그들은 문자의 클래스에만 해당됩니다. '[abc]'가'a','b','c'가 아닌 어떤 문자와도 매치하지만'[abc]'는'a','b'','c' 중 하나와 일치합니다. 전체 경기를 부정하는 것. 다르게해야합니다. 모든 숫자를 ('replace'를 사용하지 않고'match' 또는 그런 식으로) 모으고 그 다음에 그것들을 연결하는 새로운 문자열을 만들어야합니다. 그것이 당신이 추구하는 결과입니다. – UncleZeiv

+0

직접 교체 할 수 있다고 생각했습니다. 경기를 추출하고 나머지는 폐기합니다. 고맙습니다! – Chris

관련 문제