js 用正则表达式验证只允许输入数字,或者是数字后两位小数点,如何写?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了js 用正则表达式验证只允许输入数字,或者是数字后两位小数点,如何写?相关的知识,希望对你有一定的参考价值。
只能输入或粘贴纯数字的:
<input onkeyup="value=value.replace(/[^\\d]/g,'')" onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\\d]/g,''))">
页面输入框js正则验证输入值为数字,且只保留小数点后两位:
<input type="text" id="aaa" name="aaa" onkeyup="clearNoNum(this)" onblur="clearNoNum(this)"/>
function clearNoNum(obj)
//先把非数字的都替换掉,除了数字和.
obj.value = obj.value.replace(/[^\\d.]/g,"");
//保证只有出现一个.而没有多个.
obj.value = obj.value.replace(/\\.2,/g,".");
//必须保证第一个为数字而不是.
obj.value = obj.value.replace(/^\\./g,"");
//保证.只出现一次,而不能出现两次以上
obj.value = obj.value.replace(".","$#$").replace(/\\./g,"").replace("$#$",".");
//只能输入两个小数
obj.value = obj.value.replace(/^(\\-)*(\\d+)\\.(\\d\\d).*$/,'$1$2.$3');
参考技术A /^\d+(\.\d2)?$/,以纯数字为起点,并支持小数后两位,非四舍五入JS:数字和空格的正则表达式?
【中文标题】JS:数字和空格的正则表达式?【英文标题】:JS: regex for numbers and spaces? 【发布时间】:2012-10-25 03:54:05 【问题描述】:我正在使用happyJS 并使用下面的正则表达式进行电话验证
phone: function (val)
return /^(?:[0-9]+$)/.test(val);
但是这只允许数字。我希望用户能够像输入空格一样
238 238 45383
知道为什么return /^(?:[0-9 ]+$)/.test(val);
不成功吗?
【问题讨论】:
/^(?:[0-9 ]+$)/.test("238 238 45383");
返回真。似乎工作。
@raina77ow 好吧,你完全正确!对不起。我刚刚发现有一些服务器端缓存不会重新加载我的脚本文件。我测试了它100次,但它不会显示出任何效果。现在一切似乎都很好。是的,你说得对 - 我提供的代码运行良好。
【参考方案1】:
这是我建议的解决方案:
/^(?=.*\d)[\d ]+$/.test(val)
(?=.*\d)
断言输入中至少有一位数字。否则,只有空格的输入可以匹配。
请注意,这不会对位数(仅确保至少有 1 位)或空格应出现在输入中的位置施加任何限制。
【讨论】:
@raina77ow:对于?:
,我猜这不是很重要。我只是模仿OP的代码。而且您的测试完全是错误的,并且比 OP 的解决方案更糟糕。 /[0-9]/
将检查是否存在数字,/^[0-9 ]/
将检查字符串开头是否存在数字或空格。即使你在后面加上+
,它们仍然是错误的。
@nhahtdh 当然应该是/[^0-9 ]/
。关键是在开发中构建(和维护)两个简单的东西比一个复杂的东西更容易一起工作 - 正则表达式(通常)也不例外。
@raina77ow:我理解你写那个正则表达式的意图(逻辑不是测试结果),但是空字符串或只有空格的字符串将通过测试。
空字符串会通过/[0-9]/ && ! /[^0-9 ]/
测试吗?
@raina77ow:我想我误解了您的原始评论(已删除)。我明白你现在说的话,我想你可以自己写答案。【参考方案2】:
试试
phone: function (val)
return /^(\s*[0-9]+\s*)+$/.test(val);
必须至少存在一个数字才能使上述成功,但请查看 regex example here
【讨论】:
大声笑这强制一个空间存在,而不是允许可选空间。改用这个: return /^([0-9\s)+/.test(val); @AndyLorenz 请检查您的正则表达式,因为它实际上不起作用:) 很好发现:return /^([0-9\s]+)$/.test(val);【参考方案3】:试试
/^[\d ]*$/.test("238 238 45383")
console.log(/^[\d ]*$/.test("238 238 45383"));
【讨论】:
【参考方案4】:我个人使用此代码并且它可以正常工作:
function validateMobile(mob)
var re = /^09[0-9]9$/
if(mob.match(re))
return true;
else
return false;
【讨论】:
电话号码格式因国家/地区而异。正则表达式中的前缀 09 已经对数字格式做了一些假设。【参考方案5】:您可以尝试以下正则表达式来检查数字和空格。
function isTextAndNumberSpaceOnly(text)
var regex = /^[0-9 ]+$/;
if (regex.test(text))
return true;
else
return false;
【讨论】:
以上是关于js 用正则表达式验证只允许输入数字,或者是数字后两位小数点,如何写?的主要内容,如果未能解决你的问题,请参考以下文章
求教js的大神,只允许输入11位数字并且这11位数字不能全部相同的正则表达式