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]/ &amp;&amp; ! /[^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位数字不能全部相同的正则表达式

急求js正则表达式,要求只能输入数字和减号,不能输入其他任何字母或特殊字符,但是减号只能在数字的开

js验证只能输入字母,数字或字母数字组合正则表达式

js 正则验证输入框只允许输入正整数或者负整数?

javascript正则处理控件输入数字

求java正则表达式的例子,像js验证用户只可输入数字下划线字母的例子