2012-05-29 74 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]/, ''); 
相关问题