`

一步一步写正则 1:金额正则表达式

    博客分类:
  • JS
 
阅读更多

 用一个正则表达式来检查输入的"钱"是否形式正确.
    有四种钱的表示形式我们可以接受:"10000.00" 和 "10,000.00", 和没有 "分" 的 "10000" 和 "10,000": 
  ^[1-9][0-9]*$ 
  这表示任意一个不以0开头的数字,但是,这也意味着一个字符"0"不通过,所以我们采用下面的形式: 
  ^(0|[1-9][0-9]*)$ 
  一个0或者一个不以0开头的数字.我们还可以允许开头有一个负号: 
  ^(0|-?[1-9][0-9]*)$ 
  这表示一个0或者一个可能为负的开头不为0的数字.OK,让我们不要这么严格了.让用户以0开头好了.把负号的匹配也去掉,因为钱总不能是负的吧.下面我们要加的是说明可能的小数部分: 
  ^[0-9]+(.[0-9]+)?$ 
  必须说明的是,小数点后面至少应该有1位数,所以"10."是不通过的,但是 "10" 和 "10.2" 是通过的. 
  ^[0-9]+(.[0-9]{2})?$ 
  这样我们规定小数点后面必须有两位,如果你认为太苛刻了,可以这样: 
  ^[0-9]+(.[0-9]{1,2})?$ 
  这样就允许用户只写一位小数.下面我们该考虑数字中的逗号了,我们可以这样: 
  ^[0-9]{1,3}(,[0-9]{3})*(.[0-9]{1,2})?$ 
  "1到3个数字,后面跟着任意个 逗号+3个数字 " 很简单,不是吗?但是让我们使得逗号成为可选,而不是必须: 
  ^([0-9]+|[0-9]{1,3}(,[0-9]{3})*)(.[0-9]{1,2})?$ 
  这就是最终结果了,别忘了"+"可以用"*"替代如果你觉得空字符串也可以接受的话(奇怪,为什么?)最后,别忘了在用函数时去掉去掉那个反斜杠,一般的错误都在这里.OK了,当你的验证完成后,用str_replace(",", "", $money)把逗号去掉,然后把它的类型设为double,这样我们可以用它进行计算. 

分享到:
评论

相关推荐

    HTML_js_正则表达式

    - `\D` 正则表达式匹配任何非数字字符。 - `replace(/\D/g,'')` 替换所有非数字字符为空字符串,即删除这些字符。 **应用场景:** 这种输入控制适用于需要输入纯数字的场景,如年龄、ID 编号等。 --- #### 二、仅...

    春节7天练丨Day7:贪心、分治、回溯和动态规划1

    1. 正则表达式匹配:这是一个动态规划问题,需要设计状态和状态转移方程来判断一个字符串是否符合给定的正则表达式。 2. 最小路径和:同样是一个动态规划问题,可以使用自底向上的方式计算二维矩阵中每个元素到达...

    vue element-ui实现input输入框金额数字添加千分位

    这个正则表达式可以匹配不以0开头的数字、最多两位小数的金额格式。这个验证在实际使用中十分有用,能确保用户输入的格式正确。 4. 去除千分位中的逗号 `delcommafy`函数用于去除数字字符串中的千分位逗号。这一步...

    c# winform textbox控件只能输入数字的几种方法

    1. **正则表达式**:使用正则表达式`^\d+\.?\d+$`来匹配合法的数字字符串(包含可选的小数点)。 2. **错误提示**:如果不匹配,则显示错误提示,并取消表单验证过程中的下一步操作。 ### 总结 以上介绍了几种限制...

    字符分割的一个很好的下程序

    在MATLAB中,strsplit()函数可以用来实现字符串分割,但对于数字这种特殊需求,可能需要借助strfind()或regexp()函数,后者特别支持正则表达式操作,能有效满足数字分割的需求。 实际应用中的程序可能包含以下步骤...

    人民币数字转化为文字代码

    通过上述解析,我们可以看到,这个Java程序巧妙地结合了数字格式化、字符串处理和正则表达式技术,实现了人民币数字到汉字大写的高效转换。这对于开发涉及财务处理的软件系统来说,是一个非常实用且功能强大的工具。...

    该课题为基于Matlab的发票识别。可以识别发票里面的编号,金额和日期等多个字段可以进行发表了查询。.zip

    这一步可能需要编写特定的解析规则或利用正则表达式。最后,将这些信息存储到数据库或文件中,以便后续的查询与分析。 6. 查询系统开发:为了实现发票信息的快速查询,需要构建一个用户界面,用户可以通过输入...

    只能输入小数和数字的js

    使用正则表达式`[^\d.]`匹配所有非数字和非小数点字符,并将其替换为空字符串,从而实现清除操作。 4. **确保小数点唯一性**: - 移除开头的小数点: ```javascript obj.value = obj.value.replace(/^\./g, "")...

    模仿微信转账输入框规则

    1. **输入验证**:通过正则表达式或者自定义的输入过滤器,确保用户只能输入数字。对于整数部分和小数部分,可以分别进行验证,例如,整数部分允许的最大长度,小数部分允许的最大位数。 2. **实时格式化**:当用户...

    用Java语言写的模拟ATM操作流程的源代码

    这涉及到字符串处理、正则表达式和数值检查等技术。 4. **多线程**:如果要考虑并发用户,ATM系统可能需要使用Java的多线程特性,确保同一时间只有一个用户可以进行操作,以防止数据冲突。 5. **IO流**:为了读取...

    dexter-venmo-parameter-parser-源码.rar

    这通常通过正则表达式匹配和黑名单过滤来实现。 4. **业务逻辑验证**:在确保参数基础合法性后,解析器会执行特定的业务逻辑检查,如检查交易金额是否超过设定的限额,或者验证用户是否有足够的余额进行转账。 5. ...

    tesseract 安装版

    3. **后处理**:识别结果可能包含错误,可以结合其他工具或算法进行后处理,如使用正则表达式匹配、人工校对等。 总结,Tesseract 3.05.01 exe安装版为用户提供了简单快捷的OCR解决方案,尤其适合那些希望快速部署...

    java开发 js脚本 限制只输入数字

    函数内部通过正则表达式`/[^\d-]/gi`来替换掉所有非数字和非负号的字符,确保输入框内的值只包含数字和负号。然后检查替换后的值`v`是否为`0`,如果是,则将输入框的值清空;如果不是,则将处理后的值赋值给输入框。...

    对于input 框限定输入值为浮点型的js代码

    然后,通过正则表达式检查并确保输入值中没有两个或多个连续的小数点出现,因为这不符合浮点数的标准格式。 为了进一步规范,代码中还包含了将连续的小数点替换为特定字符序列"$#$",然后又将这个特殊字符替换为空...

    JavaScript格式化数字的函数代码

    最后,如果格式化规则中有千分位逗号,函数会使用正则表达式来插入逗号。这一步是通过`while`循环不断检查字符串是否符合千分位分隔的模式,如果符合,则在适当的位置插入逗号。正则表达式`(-?\d+)(\d{"+len+"})`...

Global site tag (gtag.js) - Google Analytics