您当前的位置:首页 > 互联网教程

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

发布时间:2025-05-21 18:13:59    发布人:远客网络

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

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

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

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

首先我先写了一个验证最多可保留两位小数的正则:

var reg=/^\d+(.\d{1,2})?$/;

^\d:以0-9数字开头的表达式

^\d+:以一至多个0-9数字开头的表达式

(.\d{1,2}):.小数点、d{1,2}一至两位数字

(.\d{1,2})?:小数(小数点+一至两位小数)限制出现零到一次

(.\d{1,2})?$:若存在小数点,则以小数点后的一至两位小数结尾

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

可以看到输入框输入1.后正常检验是false,然而如果在浏览器中输入校验规则和字符串则不然:

如果输入个带小数点的数字,后面又不再输入数字时,浏览器会自动忽略掉小数点,因而检验"1."类似的格式相当于校验“1”,结果自然是true。

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

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

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

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

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

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

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

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

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

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

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

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

对于正则表达式,大家先对照着MSDN上的介绍,熟悉每个符号的意思,再去理解别人写的表达式,慢慢就能写出自己的表达式了。对于正则表达式的理解,不妨想想中学学过的“排列组合”,会有用的。用排列组合把表达式中可能的各个分支完整走一遍,就都懂了

二、只能输入数字和字母组合的正则表达式怎么写

var p=/(?!^\d+$)(?!^[a-zA-Z]+$)[0-9a-zA-Z]{4,23}/

[0-9a-zA-Z]{4,23}字符或字母4-23位,不考虑全为数字和全为字符情况。

if(/^[a-zA-Z0-9]{4,23}$/.test(password)){

至少有一个数字字母的正则表达式:

/^(?=.*[A-Za-z])(?=.*\d)[A-Za-z\d]{4,23}$/

1、由数字、26个英文字母或者下划线组成的字符串:

4、非正整数(负整数+0):((−/d+)|(0+))4.非正整数(负整数+0):((−/d+)|(0+))

6、整数:−?/d+6.整数:−?/d+

7、非负浮点数(正浮点数+0):^/d+(/./d+)?$

8、正浮点数:^(([0-9]+/.[0-9][1-9][0-9])|([0-9][1-9][0-9]/.[0-9]+)|([0-9][1-9][0-9]))

9、非正浮点数(负浮点数+0):((−/d+(/./d+)?)|(0+(/.0+)?))9.非正浮点数(负浮点数+0):((−/d+(/./d+)?)|(0+(/.0+)?))

^(-(([0-9]+/.[0-9][1-9][0-9])|([0-9][1-9][0-9]/.[0-9]+)|([0-9][1-9][0-9])))

11、由26个英文字母组成的字符串:

^[A-Za-z]+13.由26个英文字母的大写组成的字符串:[A−Z]+

12、由26个英文字母的大写组成的字符串:[A−Z]+

13、由26个英文字母的小写组成的字符串:

^[a-z]+15.由数字和26个英文字母组成的字符串:[A−Za−z0−9]+

14、由数字和26个英文字母组成的字符串:[A−Za−z0−9]+

15、由数字、26个英文字母或者下划线组成的字符串:

^/w+17.email地址:[/w−]+(/.[/w−]+)∗[/w−]+(/.[/w−]+)+

alert方法有一个参数,即希望对用户显示的文本字符串。

该字符串不是HTML格式,该消息框提供了一个“确定”按钮让用户关闭该消息框,并且该消息框是模式对话框,也就是说,用户必须先关闭该消息框然后才能继续进行操作。

window.alert("欢迎!请按“确定”继续。");

str--要显示在消息对话框中的文本

alert消息对话框通常用于一些对用户的提示信息,例如在表单中输入了错误的数据时。

提示:消息对话框是由系统提供的,因此样式字体在不同浏览器中可能不同。

提示:消息对话框是排它的,也就是在用户点击对话框的按钮前,不能进行任何其它操作。

提示:消息对话框通常可以用于调试程序。

alert('Welcometo<br/>dreamdu!');

alert('Welcometo\ndreamdu!');

注意上面的第二个与第三个例子,只有第三个例子才能实现换行,参考ASCII码表,使用HTML中的br标签无法换行。

三、正则表达式只允许输入数字和冒号,并且开头和结尾只能数字

1、如果你需要正则表达式只允许输入数字和冒号,并且确保开头和结尾只能是数字,那么可以试试这个:/^\d+:\d$/。这个表达式确保了字符串以数字开始,以数字结束,并且中间包含一个冒号。

2、如果你需要更严格的格式,例如确保输入的数字不超过两位,并且可以有多个冒号,那么可以使用这个表达式:/^\d+:+\d$/。这个表达式允许多个冒号的存在。

3、如果你只需要两个数字,那么可以修改为:/^\d{2}:+\d{2}$/。这个表达式确保了输入的数字是两位,并且中间有多个冒号。

4、如果你不需要多个冒号,只需要一个,并且两个数字都为两位数,那么可以使用:/^\d{2}:\d{2}$/。这个表达式确保了输入的数字是两位,并且中间有一个冒号。

5、如果你需要更严格的时钟格式,即小时在00到23之间,分钟在00到59之间,那么可以使用这个表达式:/^[0-2][0-3]:[0-5][0-9]$/。这个表达式确保了小时在00到23之间,分钟在00到59之间。