2012-05-29 5 views
1

에서 제거 달러 기호 나는, 문자 쉼표와 달러 기호를 테스트하기 위해 다음 onKeyUp에 명령을, 제거 :정규식 텍스트 입력

그것은 달러 기호를 제외한 모든 작동
onkeyup="if (/(?:[a-zA-Z]|\s|,|\$)+/ig.test(this.value)) this.value = this.value.replace(/(?:[a-zA-Z]|\s|,|\$)+/ig,'')" 

.

아무도 나를 도와 줄 수 있습니까?

덕분에, Brds

+4

실제로 이것은 나를 위해 올바르게 작동하는 것처럼 보입니다. 그러나 정규식은 훨씬 간단 할 수 있습니다. 오해하지 않는 한'/ [a-z \ s, $]/ig'입니다. http://jsfiddle.net/skM5N/3/ –

+0

나를 위해 일해 ... 콘솔에'this.value'을 덤핑하고 거기에 무엇이 있는지보십시오. –

+0

테스트없이 교체를 실행하는 것이 비용이 적게 듭니다. –

답변

2

HTML는 인라인 HTML 문자열이 아닌 정규식 탈출로 백 슬래시를 해석합니다. 다음 코드는 $을 인쇄합니다.

<body onload='alert("\$");'> // prints '$', not '\$' 

두 번 이스케이프 처리하거나 정규식을 인라인 HTML에서 함수로 이동해야합니다.

onkeyup="if (/(?:[a-zA-Z]|\s|,|\\$)+/ig.test(this.value)) this.value = this.value.replace(/(?:[a-zA-Z]|\s|,|\$)+/ig,'')" 
+0

문자열은 이스케이프되지만 정규 표현식 아니다. 편집을 참조하십시오. –

3

당신은 단지 숫자에 임의의 문자열을 정리하려는 경우, 당신은 모든 것을 대체하여 적은 가장자리 케이스를 쫓아 것 다음과 같이

나는, 정답 \\$으로 \$ 교체 믿습니다 그것은 빈 문자열과 함께 숫자가 아닙니다 (정수를 원한다는 가정하에).

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