0 0

正则表达式,如何限定输入的是浮点数,且整数位8位,小数位2位3

正则表达式,如何限定输入的是浮点数,且整数位8位,小数位2位,数据库对应字段为Numric(10,2)。现在要求如果只输入整数的话,只允许输入8位,如:12345678,如果带小数的话,整数位也最多8位,但可以加小数点后2位,如12345678.12是符合要求的,现在不知道正则表达式该如何写。 /\d{1,8}\.{0,1}\d{0,2}/如果这样写的话,可以输入10位整数, /\d{1,8}\.\d{0,2}/如果这样写,文本框中无法输入任何字符。希望有人指点一下。谢谢。

问题补充:答案的做法我试过不行,提示stack overflow at line 0,不明白怎么回事

问题补充:
<input   id="D4NTZ" name="D4NTZ" value=0 width="200%"   maxlength=13  onpropertychange="javascript:CheckInputFloat(this);" >


function CheckInputFloat(oInput)
{

      if('' != oInput.value.replace(/(\d{1,8})|(\d{1,8}\\.\d{0,2})/,''))
    {
        oInput.value = oInput.value.match(/(\d{1,8})|(\d{1,8}\\.\d{0,2})/) == null ? '' :oInput.value.match(/(\d{1,8})|(\d{1,8}\\.\d{0,2})/);
    }


}

问题补充:试了还是不行,是不是方法有问题?

问题补充:
lovewhzlq 写道
最大长度应该是10吧 maxlength=10


跟那个关系不大,改了也不行,长度应该是11,加小数点

问题补充:
mginobili 写道
如果lz不介意的话可以采用 /\d{1,8}\.{0,1}\d{0,2}/匹配

匹配成功后 再check是否有'.',如果没有 一样返回匹配失败 呵呵

请问怎么操作?

问题补充:
lovewhzlq 写道
你想要实现的效果是怎样的,看你那方法太怪了,

怎么还是绑定在onpropertychange事件上?

恩,网上找的,是有点古怪。改成onchange,好像又没效果

JS限制文本框只能输入整形或浮点数
        这个问题应该是老生常谈了,但是始终不好解决,有以下需要进行限制:
        1、敲击键盘只能输入输入数字;
        2、复制的时候也需要删除非数字字符;
        3、使用输入法也应该只认数字;
        4、在页面中选择一段文字,直接拖拽,也应该能进行筛选;

        所以我们需要一个在任何时候只要文本框内容发生变化就触发的事件,来完成上述工作,而不是单纯的onchange事件。

        让我们庆幸的是IE中提供一个onpropertychange事件,他可以捕捉到文本框任何文本变化。接下来就简单了,通过这个事件我们就可以定义以下两个方法来处理整形和浮点数的输入限制。



问题补充:
mginobili 写道
function CheckInputFloat(input) {
var reg =  /\d{1,8}\.{0,1}\d{0,2}/;   
    if (reg.test(input))   
    {  
         if(input.indexOf('.') != -1)
         {
           return true;
         }
    }
    return false;
}

另外把这个事件绑定到控件的onblur上

谢谢所有人的帮助,根据你这个启发,我想到了一个解决办法。
function CheckInputFloat(oInput)
{

      if('' != oInput.value.replace(/\d{1,8}\.{0,1}\d{0,2}/,''))//不匹配
      
    {
        oInput.value = oInput.value.match(/\d{1,8}\.{0,1}\d{0,2}/) == null ? '' :oInput.value.match(/\d{1,8}\.{0,1}\d{0,2}/);
         
         if(oInput.value .indexOf('.') == -1) //无小数点  
         {   
           oInput.value =   oInput.value.substr(0,8)+'.'+ oInput.value.substr(8);
           alert(oInput.value);
         }   
    }else{//匹配
    	
     if(oInput.value .indexOf('.') == -1) //无小数点  
         {   
           oInput.value =   oInput.value.substr(0,8)+'.'+ oInput.value.substr(8);
           alert(oInput.value);
         }   
    
    }


}

问题补充:
	//Float
function CheckInputFloat(oInput)
{

      if('' != oInput.value.replace(/\d{1,8}\.{0,1}\d{0,2}/,''))//不匹配
      
    {
        oInput.value = oInput.value.match(/\d{1,8}\.{0,1}\d{0,2}/) == null ? '' :oInput.value.match(/\d{1,8}\.{0,1}\d{0,2}/);
         
         if(oInput.value .indexOf('.') == -1) //无小数点  
         {   
           oInput.value =   oInput.value.substr(0,8)+'.'+ oInput.value.substr(8);
          
         }   
         
    }else{//匹配
    	
     if(oInput.value .indexOf('.') == -1&&oInput.value.length>8) //无小数点且长度大于8  
         {   
           oInput.value =   oInput.value.substr(0,8)+'.'+ oInput.value.substr(8);
           
         }   
    
    }

}
2010年1月20日 15:27
  • 大小: 58.4 KB

11个答案 按时间排序 按投票排序

0 0

采纳的答案

function CheckInputFloat(input) {
var reg =  /\d{1,8}\.{0,1}\d{0,2}/;   
    if (reg.test(input))   
    {  
         if(input.indexOf('.') != -1)
         {
           return true;
         }
    }
    return false;
}

另外把这个事件绑定到控件的onblur上

2010年1月20日 16:19
0 0

CheckInputFloat(oInput) 这个方法导致了死循环就出了stack overflow at line 0的问题


2010年1月20日 16:44
0 0

正则没有办法解决长度匹配的问题。
把 要解析的分2部分处理吧。
var re=/\./;
var num='12345678.213';
var result= num.split(re);
alert( !isNaN(num) && result[0].length <=8 && ( !result[1] || result[1].length <=2 ) );

2010年1月20日 16:18
0 0

你想要实现的效果是怎样的,看你那方法太怪了,

怎么还是绑定在onpropertychange事件上?

2010年1月20日 16:13
0 0

如果lz不介意的话可以采用 /\d{1,8}\.{0,1}\d{0,2}/匹配

匹配成功后 再check是否有'.',如果没有 一样返回匹配失败 呵呵

2010年1月20日 16:11
0 0

最大长度应该是10吧 maxlength=10

2010年1月20日 16:08
0 0

我测试了 但是没有出现lz的错误
代码如下

var reg = /(^\d{1,8})|(^\d{1,8}\.\d{0,2})/;
    if (!reg.test("22222222a2.2"))
    {
    	alert("error");
    }


但是这个还是有问题
因为测试例子中的22222222a2.2明明是错误的
确因为匹配了前面的22222222而返回正确的结果

2010年1月20日 15:57
0 0

这个可以的
/(\d{1,8})|(\d{1,8}\\.\d{0,2})/

把你代码粘出来

2010年1月20日 15:56
0 0

/(\d{1,8})|(\d{1,8}\\.\d{0,2})/

2010年1月20日 15:43
0 0

不好意思 刚错了

/(\d{1,8})|(\d{1,8}\.\d{0,2})/ 

2010年1月20日 15:41
0 0

/(\d{1,8}\.{0,1}\d{0,2})|(\d{1,8}\.\d{0,2})/

2010年1月20日 15:37

相关推荐

    详解Java判断是否是整数,小数或实数的正则表达式

    在Java中使用正则表达式来判断字符串是否符合整数、小数或实数的格式是一种常见且有效的做法。在编程中,我们经常需要对输入的字符串进行格式验证,以确保它们符合预期的数值格式,尤其是在处理财务数据、用户输入...

    正则表达式 浮点数验证

    ### 正则表达式浮点数验证及相关应用 #### 一、正则表达式的概念与作用 正则表达式是一种强大的文本匹配工具,用于检查一个字符串是否符合某种特定的模式。在软件开发中,正则表达式常被用来进行数据验证、搜索...

    判断整型和浮点型数据的正则表达式

    该正则表达式能够验证字符串是否表示标准的浮点数格式,包括但不限于:正负整数、带小数点的数字等。同时,它还限制了小数点后的位数不超过两位。 ### 四、总结 通过上述分析,我们可以清楚地了解到两个正则表达式...

    100个常用正则表达式

    正则表达式(Regular Expression)是用于匹配字符串模式的一种语法,广泛应用于文本处理、数据验证、数据提取等领域。以下是对一些常见的正则表达式的详细解释: 1. 匹配中文字符:`[u4e00-u9fa5]` 这个正则表达式...

    正则表达式大全.txt

    - 输入可以是整数或带有小数部分的浮点数。 - **验证特定格式的浮点数**:`^(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$` - 输入必须是符合特定格式的浮点数。 - **验证...

    利用正则表达式巧妙解析度分秒格式字符串

    在编程领域,正则表达式是一种强大的文本处理工具,它能帮助我们进行复杂的字符串匹配、查找、替换和解析。在本话题中,我们将探讨如何利用C#中的正则表达式来巧妙地解析度分秒格式的字符串,将其转换为统一的度数...

    [JAVA源码]捣鼓生成浮点数的最小最大值的正则表达式---by_langx

    这个`generateFloatRegex`函数首先生成整数部分的正则表达式,然后创建小数部分的正则表达式,并将两者合并,最后加上正负号。这个函数可以根据传入的最小值和最大值生成合适的正则表达式,用于验证字符串是否符合...

    正则表达式在程序开发中的应用

    $`:匹配整数或最多有两位小数的浮点数。 - `^[0-9]+(.[0-9]{1,3})?$`:匹配整数或最多有三位小小数的浮点数。 - `^\+?[1-9][0-9]*$`:匹配正整数。 - `^\-[1-9][0-9]*$`:匹配负整数。 - `^.{3}$`:匹配长度为 ...

    最全的常用正则表达式大全

    ### 正则表达式知识点详解 #### 一、校验数字的正则表达式 **1.1 数字** - **表达式:** `^[0-9]*$` - **解释:** 匹配任意数量(包括0个)的数字。 - **应用场景:** 用于验证输入是否全为数字。 **1.2 n位的数字**...

    正则表达式例子大全 正则表达式例子大全

    ### 正则表达式知识点详解 #### 一、正则表达式基础介绍 正则表达式是一种用于描述字符串模式的强大工具,在计算机编程中被广泛应用于文本处理任务,如字符串匹配、搜索与替换等操作。 #### 二、常用正则表达式...

    c#,正则表达式,源代码

    ### C#中的正则表达式应用与实例 正则表达式是进行文本匹配、搜索、替换等操作的强大工具。在C#中,正则表达式的使用非常广泛,无论是开发Web应用还是桌面应用都能见到它的身影。本文将详细介绍一系列常用的正则...

    正则表达式正则表达式正则表达式

    根据给定的信息,我们可以归纳总结出正则表达式的多个应用场景及其实现方式。正则表达式是一种强大的文本处理工具,在日常开发工作中有着广泛的应用。接下来,我们将深入探讨这些正则表达式的具体含义及其应用场景。...

    各种正则表达式验证有数字英文中文符号

    标题与描述概述的知识点主要集中在正则表达式的应用上,涉及了多种常见数据类型的验证,如时间、数字、中文字符等。以下是对这些知识点的详细解释: ### 正则表达式验证规则 #### 1. **任意非空字符串验证** ```...

    RPA常用的正则表达式汇总

    7. **电话号码正则表达式**:支持手机号码、3-4位区号、7-8位直拨号码、1-4位分机号 - 更复杂的电话号码匹配规则。 这些正则表达式对于RPA开发者来说是极其宝贵的资源,它们能够帮助在UiBot中实现精确的数据验证和...

    JS常用正则表达式

    ### JS常用正则表达式知识点解析 #### 一、电子邮件地址验证 **功能说明:** 验证输入的字符串是否符合标准电子邮件地址格式。 **正则表达式:** ```javascript /^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$/ ``` **...

    常用的正则表达式.txt

    ### 常用的正则表达式解析 #### 1. 整数验证 - **正则表达式**: `1^\d+$` - **描述**: 验证非负整数。 - **应用场景**: 用于检查输入是否为一个或多个数字组成(即非负整数)。 #### 2. 正整数验证 - **正则表达式...

    电话号码和手机号码正则表达式

    例如,匹配整数的正则表达式为:\d+,匹配浮点数(小数)的正则表达式为:(‐?\d*)\.?\d+。 综上所述,文章详细介绍了如何使用正则表达式来处理和验证电话号码、手机号码以及其他常见文本信息。通过这些正则表达式...

Global site tag (gtag.js) - Google Analytics