如何使用正则expression式去除string中的字母和破折号和美元符号?
我试图find所有的字母和破折号和美元符号,并从文本框中删除它们。
function numbersOnly() { if ($('.sumit').val().indexOf([A-Za-z-$])) { $('.sumit').val().replace([A-Za-z-$], ""); } }
这就是我所拥有的,我很确定这是错误的。 我用正则expression式不太好,但是我正在努力学习它们。 有没有人想帮助我,让我开始完成这个function?
所以..你有input。
<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>
那么你有这个function:
numbersOnly = function() { $('.sumit').val().replace(/[A-Za-z$-]/g, ""); alert($('.sumit').val()); return false; }
我警觉确定replace是否工作。 不是。
马克是所有的非数字。 如果只想取出字母,破折号和$(例如,保留小数),则对原始文件的修改应该这样做:
$('.sumit').val().replace(/[A-Za-z$-]/g, "");
(我个人更喜欢马克的更新答案,因为他所做的一切,你抓住了一切,你无法预测这种方式。
对于你更新的问题,值不变的原因是因为val()返回一个新的string。 它不会改变实际的价值。 要做到这一点,请尝试:
$('.sumit').each(function() { $(this).val($(this).val().replace(/[A-Za-z$-]/g, "")); }); alert($('.sumit').val());
我也做了一个each()的调用,以便每个元素都可以单独完成。
这应该做到这一点
$('.sumit').val().replace(/[^\d.]/g, "");
[^]
是否定的字符类,所以它将匹配字符类中列出的所有字符。
在这种情况下,我们的字符类是\d
(它是数字0-9)和一个句点(允许十进制数字)。
我更喜欢这种方法,因为它会捕获任何不是数字的东西 ,而不必担心显式列出我不想要的非数字字符。
如果你真的只想排除字母,$和 – ,那么肖恩的答案是更好的方法。
我真的很喜欢Mark的回答。 但是,根据您的编程语言(和RegEx引擎) \d
匹配字符如4或8,这是UTF-8数字 。
所以如果你只想从0到9的数字,使用[^0-9.]
:
$('.sumit').val().replace(/[^0-9.]/g, "");
如果您的RegEx引擎支持UTF-8,则速度会更快。 一个示例语言,这适用于python3( http://docs.python.org/3/library/re.html – search“\ d”)。 ECMA标准 ,但是,说,对于JavaScript \d
等于[0-9]
。
$('.sumit').val().replace(/\D/g, "");
取代sumit值中的所有非数字值
这对我工作:
$('.sumit').val().replace(/[^\d]/g, "");
我试着用大写字母D来回答Mike的答案,而不是首先否定一个\ d,因为某种原因我没有删除括号和其他标点符号。 否定\ d工作完美。
如果你想保留小数,也可以在方括号内加一个点和其他符号。
PS我testing的环境是Titanium SDK。
尝试这样的事情:
function numbersOnly() { $('.sumit').val().replace(/[\w-$]/g, ""); }