OK,现在我们可以用我们刚才学的东西来做一些有用的事情:用一个正则表达式来检查输入的"钱"是否形式正确.有四种钱的表示形式我们可以接受:"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,这样我们可以用它进行计算.
分享到:
相关推荐
可以将输入的内容转换或过滤成有正则表达式的输出表达式
正则表达式
编译原理课的大作业 包含三个小实验 在一个cpp文件里 正则表达式转换为nfa nfa转换为dfa dfa最小化 个人原创代码
JAVA实现的正则表达式转换成DFA,并将DFA用Graph画出,画图须安装Graph。
C语言编写的将正则表达式转换为NFA,可以运行
正则表达式匹配(自动转换)无需在为正则表达式而烦恼啦
正则表达式转换为NFA,dfa,确定化 简单 方便实现
课程设计 正规式构造nfa.这是编译原理的一个实验, 是把一个正则表达式转化为不确定有穷自动机NFA的算法程序,朋兴趣的朋友可以下载来看看哦。
输入字符,通过正则验证是否为金额不超过万亿精确到小数点后两位,然后将数字转换为大写 包括后台java正则验证及前台js验证 请输入一个数字(精确到小数点后两位): fdsa54325.54 fdsa54325.54 false 请输入一个...
代码相对简单; c语言实现; 正则表达式转换为nfa;
正则表达式转换最小化的小工具。非常好用。输入正则表达式,则得到相应最小化DFA。
自个用的一个小工具,比如将 “\u6C49\u5B57\u7F16\u7801\u8F6C\u6362” 转为“汉字编码转换”。要能看得懂描述对你可能有用,如果看不懂说明没有用。...附带简单的正则表达式测试:match和test方法的测试和语法介绍。
基于Java实现了DFA,NFA,DFA最小化,NFA转化为DFA以及正则表达式转化为NFA的算法,对于初学者来说,是学习词法分析的一份不错资源
正则表达式与自动机的转换,以及自动机的化简
输入一个正则表达式,然后将此正则表达式转换为NFA,最后将此NFA输出 【实验要求】: 写出程序运行环境, 体会,程序结构,程序清单, 典型结果,以及结果分析 【程序运行环境】: 此程序是在Visual C++下,新建一...
用JAVA写的一个将正则表达式转换为NFA的代码,基于Thompson算法的思想,递归构建NFA。jar为源码文件。 输出非确定有限自动状态机的有向图。如正则表达式: c(a|b)NFA为:0-c->1-ep->2-a->3-ep->7 ,0-c->1-ep->4-b->5-...
人工智能-项目实践-可视化-正则转NFA再转DFA的可视化分析工具 环境配置 本项目经测试在以下环境下可以正常运行: macOS Mojave 10.14.2 Python 3.7.1 graphviz: stable 2.40.1 对应的Python包版本为0.13
包含正则式转NFA、NFA转DFA(NFA确定化)、DFA转MFA(DFA最小化)三个程序,以及对应报告简述类的设计、包含的变量和思路。详细介绍参考:https://blog.csdn.net/newlw/article/details/123116153
全角数字正则匹配后输出半角数字,可以把日期字符串中的全角转换成半角,又便于转换成日期格式