2012-05-29 110 views
1

我有以下的onkeyup命令來測試,並刪除,信件逗號和美元符號:正則表達式 - 刪除美元符號從文本輸入

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

它適用於一切,除了對美元的跡象。

有人可以幫我嗎?

感謝, 惟妙惟肖

+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]/, ''); 
相關問題