正则表达式验证文本框只能输入数字和小数点

并且小数点不能在第一个,而且小数点只能有一个 求高手说说 在线急等

在浏览器验证正则字符时,如果输入的是数字带小数点后面不再输入数字,那么浏览器会自动截取掉小数点,即:输入"1.",浏览器会处理成"1"

唔…因此当我为求方便直接在浏览器中输出表达式时就踩坑了 = =

首先我先写了一个验证最多可保留两位小数的正则:
var reg = /^\d+(.\d{1,2})?$/;
\d:0-9的数字
^\d:以0-9数字开头的表达式
^\d+:以一至多个0-9数字开头的表达式
( ):括号里是一个整体
(.\d{1,2}):. 小数点 、d{1,2} 一至两位数字
(.\d{1,2})?:小数(小数点 + 一至两位小数)限制出现零到一次
(.\d{1,2})?$:若存在小数点,则以小数点后的一至两位小数结尾

在页面中写一个输入框和点击按钮,测试校验是否成功:

浏器F12打开控制台查看效果:
在这里入图片描述
可以看到输入框输入1.后正常检验是false,然而如果在浏览器中输入校验规则和字符串则不然:
在这里入图片描述
如果输入个带小数点的数字,后面又不再输入数字时,浏览器会自动忽略掉小数点,因而检验"1."类似的格式相当于校验“1”,结果自然是true。

仅记录为主,若有什么错误还望包涵指出

对于文本框输入的校验有不同的思路,本例采用了正则表达式匹配的方法。

1、即时验证:

为了即时对文本框内容进行验证,可以利用控件的validating事件,当控件失去焦点时,便会触发该事件。

2、正则表达式:

将要验证的有效格式写成正则表达式,不仅可以方便快捷地进行匹配,而且对于以后需求更改时也易于修改(只需修改正则表达式即可)。

利用正则表达式时,需要添加引用:< usingSystem.Text.RegularExpressions; >

3、验证完成:

验证通过后进行的操作可以使用控件的validated事件。例如,如果在验证不通过时有错误提示的话,那么验证通过时就可以给出验证通过的提示。该事件可根据实际需要选用。

4、正常退出:

在Validating事件中做验证处理时,如果验证不通过,本例希望焦点仍停留在该文本框内,即只有输入合法才能进行其他操作。这样的负作用之一就是用户在输入不合法时也无法正常退出程序,因此为使关闭程序的操作不受文本框验证的影响而正常使用,可以在FormClosing事件中添加e.Cancel=false来解决。

5、限制输入长度:

如果用户不小心压住了某个数字键,此时文本框里已经输入了100多位的数据,而且又恰好点击了“提交”按钮时,你能保证后台代码能接受这个结果吗?你如果也有这样的担心,那就试试控件的maxLength属性吧。

6、禁用输入法:

本例要求只能输入数字,因此如果禁用输入法后会省去很多麻烦。禁用后,无法直接输入中文,也无法“直接”输入全角字符。去查查控件的ImeMode属性,设置为disabled后就可以了。

7、全角字符串的处理:

知道上一步为什么说禁用输入法后无法“直接”输入全角字符吗?因为还可以“间接”输入!是的,那就是将全角字符串复制后粘贴过来。不要以为抽风的人才会这么无聊帮你去找Bug,程序员还是应该尽量把可能的异常先做好预防。(当然,禁用文本框的粘贴功能也不错,本例为照顾用户可能存在的粘贴较长数据的需要,没有禁用。大家可以自行搜下禁用粘贴的资料。)

如果文本框里含全角字符,在后期做数据运算时很容易出问题,本例解决方法是先检查,若是全角字符串则转换为半角字符串。

心得体会:

写出一个完全正确且符合自己要求的正则表达式确实需要好好构思,尤其是匹配内容较复杂时。但也不必担心,如果一个表达式完不成,可以写多个表达式然后“或”运算。在写正则表达式时不要盲目地参看网上已有的表达式,最好做个测试程序验证下,因为不同的语言正则表达式语法会有细微的不同。

对于正则表达式,大家先对照着MSDN上的介绍,熟悉每个符号的意思,再去理解别人写的表达式,慢慢就能写出自己的表达式了。对于正则表达式的理解,不妨想想中学学过的“排列组合”,会有用的。用排列组合把表达式中可能的各个分支完整走一遍,就都懂了
温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2017-04-22
^\d+(\.\d+)?$

不知道,lz还能不能看得到,不过,提醒你一下,你的正则只错误的!
比如:[0-9]{0} 是没有用的
还有,.24也是可以匹配的吧
另,你采纳的那个答案,小数点在前面也是可以的,真发愁你们治学的态度!追问

/^[0-9]{1}([0-9]|[.])*$/; 这样才是对的 刚刚结贴那个是我没修改的

追答

那你的正则的话,在试试多个小数点的情况呢?

追问

只能判断一次 两个都判断不了 ......

追答

什么意思?那你没有试试我给你的正则好不好使?

遇到你这样的lz,我也真是倒霉了,耽误我的采纳率,气死我了!

追问

我刚刚自己写了。 随便采纳了个 还没来的级试 呵呵 下次采纳你

第2个回答  2012-06-04
举个例子:
<html>
<head>
<title>无标题页</title>

<script language="javascript" type="text/javascript">
function NumberCheck(num)
{
var re=/^\d*\.{0,1}\d{0,1}$/;
return re.exec(num) != null;
}
function check()
{
if (!NumberCheck(document.getElementById("a").value))
{
alert("格式不对");
}else{
alert("格式正确");
}
}
</script>

</head>
<body>
<form method="post" action="">
<input type="text" id="a" />
<input type="button" onclick="check()" value="check" />
</form>
</body>
</html>
你看看这个,这个是在html页面中的本回答被提问者采纳
第3个回答  2013-02-22
/[^\d\.]/g,''
第4个回答  2012-06-04
发错地方了~~~
LZ,你这个还是错的。。。。。真服你了,严谨点啊. /^\d+\.{0,1}\d*$/追问

...你们回答的每个都不一样 我都不知道选那个了。。

正则表达式验证文本框只能输入数字和小数点
可以看到输入框输入1.后正常检验是false,然而如果在浏览器中输入校验规则和字符串则不然:在这里入图片描述 如果输入个带小数点的数字,后面又不再输入数字时,浏览器会自动忽略掉小数点,因而检验"1."类似的格式相当于校验“1”,结果自然是true。仅记录为主,若有什么错误还望包涵指出 对于文本框输...

输入框里面只允许输入数字和小数点 正则表达式解决方法
为了确保输入框内只允许输入数字和小数点,可以使用正则表达式进行有效控制。一种方法是在输入框的keyup事件中添加代码,如下所示:当用户在输入框中输入文本时,使用replace方法和正则表达式`\/[^0-9.]`。这段表达式的作用是将所有非数字和非小数点的字符替换为无,确保输入框内仅包含数字和小数点。此外...

JS通过正则限制 input 输入框只能输入整数、小数(金额或者现金) 两位...
原理:通过 正则表达式判断,不满足 执行alert。第一个正则表达式是 \/^d+$\/ 表示可以是一个或者多个数字 第二个正则表达式是 \/^d*(?d{0,2})?$\/ 表示必须是数字开头,数字结尾。这里重点是要数字结尾, 在计算机中通常小数 1. , 2. 这种写法, 就是可是小数点结尾的, 是正确的。这里强制...

验证只能输入数字,正负号和小数点的正则表达式
正则表达式为: @"^(\\-|\\+)?\\d+(\\.\\d+)?$"你试试。

js 用正则表达式验证只允许输入数字,或者是数字后两位小数点,如何写...
页面输入框js正则验证输入值为数字,且只保留小数点后两位: function clearNoNum(obj){ \/\/先把非数字的都替换掉,除了数字和.obj.value = obj.value.replace(\/[^\\d.]\/g,"");\/\/保证只有出现一个.而没有多个.obj.value = obj.value.replace(\/\\.{2,}\/g,".");\/\/必须保证第一个为数字...

js有限文本框只能输入一个数字方法总结
有时我们需要限制文本框输入的类型。在本节中,我们共享以下正则表达式约束:文本框只能输入数字、小数点、英文字母、汉字等代码。例如,输入大于0的正整数。复制代码代码如下所示:1、文本框只能输入数字码(小数点不能输入)复制代码代码如下所示:2,数字只能输入,小数点可能丢失。复制代码代码如下所示...

验证只能输入数字,逗号和小数点的正则表达式
* 验证只能输入数字,逗号和小数点的正则表达式 *\/ Pattern p = Pattern.compile("[\\\\d,.]+"); String s = "21534,.dd"; Matcher m = p.matcher(s); System.out.println(m.matches()); 本回答由网友推荐 举报| 答案纠错 | 评论 0 5 坏坏奶茶 采纳率:52% 擅长: JAVA相关 C\/C++ 数据库DB ...

在.NET文本框中,怎样让文本框内只能输入数字或小数点。。。
可以加一个验证控件,然后用正则表达式。整数:^-?\\d+ 非负浮点数(正浮点数 + 0):^\\d+(\\.\\d+)?正浮点数 ^(([0-9]+\\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\\.[0-9]+)|([0-9]*[1-9][0-9]*))非正浮点数(负浮点数 + 0)^((-\\d+(\\.\\d+)?)|(...

验证只能输入数字,逗号和小数点的正则表达式
if (!value) { return callback(new Error('站点区警局电话不能为空'));} else { const reg = \/[^\\d+(,\\d\\d\\d)*.\\d+$]\/g;console.log(reg.test(value));if (reg.test(value)) { return callback(new Error('仅允许输入数字', -',多个手机号请以逗号隔开'));} else{ cal...

jquery 判断文本框只能输入数字和小数点且最多后两位
可以用正则表达式吗:\/^(0{1,2}[1-9]|[1-2]\\d{1,2})(.0[1-9]|.[1-9]\\d){0,1}$\/,反正这个可以满足的,不可以就另说了。if(!\/^(0{1,2}[1-9]|[1-2]\\d{1,2})(.0[1-9]|.[1-9]\\d){0,1}$\/.test("输入的内容")){ alert("输入有误");}else{ alert("...

相似回答