我正在尝试查找所有字母和破折号以及美元符号,并将其从文本框中删除.
function numbersOnly()
{
if ($('.sumit').val().indexOf([A-Za-z-$])) {
$('.sumit').val().replace([A-Za-z-$], "");
}
}
Run Code Online (Sandbox Code Playgroud)
这就是我所拥有的,我很确定这是错的.我对正则表达式并不太满意,但我正在努力学习它们.有没有人想帮助我,让我开始完成这个功能?
所以..你有输入.
<div class="numInputRight"><input type="text" class="sumit" name="sumAmount1"></div>
<div class="numInputRight"><input type="text" class="sumit" name="sumAmount2"></div>
<div class="numInputRight"><input type="text" class="sumit" name="sumAmount3"></div>
Run Code Online (Sandbox Code Playgroud)
然后你就有了这个功能:
numbersOnly = function()
{
$('.sumit').val().replace(/[A-Za-z$-]/g, "");
alert($('.sumit').val());
return false;
}
Run Code Online (Sandbox Code Playgroud)
我警告确定更换是否正常.不是.
Mar*_*iek 149
这应该做到这一点
$('.sumit').val().replace(/[^\d.]/g, "");
Run Code Online (Sandbox Code Playgroud)
这[^]
是一个否定的字符类,因此它将匹配除字符类中列出的字符之外的所有字符.
在这种情况下,我们的字符类是\d
(数字0-9)和句点(允许十进制数字).
我更喜欢这种方法,因为它会捕获任何不是数字的东西,而不必担心明确列出我不想要的非数字字符.
如果你真的只想排除字母,$和 - ,那么肖恩的回答是更好的方法.
Sea*_*ean 26
马克是为所有非数字做的.如果你只想取出字母,短划线和$,(但是留下小数,例如),对你的原始版本的修改应该这样做:
$('.sumit').val().replace(/[A-Za-z$-]/g, "");
Run Code Online (Sandbox Code Playgroud)
(而且我个人更喜欢马克的更新答案,原因与他相同;你会抓住那些你无法预测的事情.)
对于更新的问题,值未更改的原因是因为val()返回一个新字符串.它不会改变实际值.为此,请尝试:
$('.sumit').each(function() {
$(this).val($(this).val().replace(/[A-Za-z$-]/g, ""));
});
alert($('.sumit').val());
Run Code Online (Sandbox Code Playgroud)
我也把它变成了一个each()调用,这样每个元素都可以单独完成.
我真的很喜欢马克的回答.但是,根据您的编程语言(和RegEx引擎)\d
匹配4或8等字符,这些字符是UTF-8数字.
因此,如果您只想要0到9之间的数字,请使用[^0-9.]
:
$('.sumit').val().replace(/[^0-9.]/g, "");
Run Code Online (Sandbox Code Playgroud)
如果您的RegEx引擎能够识别UTF-8,则速度会更快.一个示例语言,适用的是python3(http://docs.python.org/3/library/re.html - 搜索"\ d").在ECMA标准,然而,说对JavaScript \d
等于[0-9]
.