正则表达式匹配USD格式
什么是USD
USD是美元数额的一种表示格式,该格式要求字符串符合以下特征:
- 以 $ 开始
- 整数部分,从个位起,满 3 个数字用 , 分隔
- 如果为小数,则小数部分长度为 2
那么如何用正则表达式来匹配USD格式的字符串呢?
咱们先揭晓答案,然后慢慢解释
/^\$(([1-9]\d{0,2}(,\d{3})*)|0)(\.\d{2})?$/
第一部分^\$[1-9]\d{0,2}
要求以美元符号开头:
- $字符在正则里本身有含义,它需要转义
- 以某字符串开头,用符号^表示
n$:匹配任何结尾为 n 的字符串
^n:匹配任何开头为 n 的字符串
数额的第一组数字由0-3位数字组成,且第一位不能为零(从左向右看):
- []表示取值的枚举或者取值的范围,[1-9]匹配除0之外的数字
- \d是数字的元字符,等价于[0-9]
- {0,2}表示前面的匹配规则重复0-2次
[x-y]:查找任何从 x 至 y 的数字
\d:查找数字
n{X,Y}: X 和 Y 为正整数。前面的模式 n 连续出现至少 X 次,至多 Y 次时匹配,Y省略时表示没有上限
第二部分(,\d{3})*
数额除第一组和小数部分外后续的数字每三位为一组,组于组以,分隔:
- 逗号,不存在歧义,转义不转义随意
- {3}表示前面的匹配规则必须重复3次
- *表示重复前面的匹配规则至少0次,等价于{0,}
n{X}:X 是一个正整数,前面的模式 n 连续出现至少 X 次时匹配
n*:匹配任何包含零个或多个 n 的字符串
第三部分(\.\d{2})?$
小数部分必须为两位,小数部分可有可无:
- 符号.在正则里有含义,它需要转义
- 综合前面所讲,\d{2}表示匹配两位任意数字
- 符号?表示该匹配规则可有可无
.:单个字符的占位符(换行和行结束符),比如在 “That’s hot!” 里 /h.t/g 匹配 “hat” 和 “hot”
n?:匹配任何包含零个或一个 n 的字符串
当数额整数时必须以整数结尾,当数额小数时必须以小数结尾:
- 符号$表示以该匹配规则结尾,如 \d{2}$ 匹配 “abc12” 为true,匹配 “ab12c” 为false
n$:匹配任何结尾为 n 的字符串(这里可是在本博文第二次出现了,记牢了嗷)
第四部分(([1-9]\d{0,2}(,\d{3})*)|0)
补充第一部分的一个边界情况,当数额小于1时,整数部分(同时也是第一位且唯一一位)可以为0
比如:$0.12、$0.33 这种也需要符合匹配。
x|y:匹配x或y。例如,“z|food”能匹配“z”或“food”,“(z|f)ood”则匹配“zood”或“food”。
综合四个部分,得出答案为 /^$(([1-9]\d{0,2}(,\d{3})*)|0)(.\d{2})?$/
console.log(isUSD('$100,023,032.03')); // true
console.log(isUSD('$10,023,032.03')); // true
console.log(isUSD('$1,023,032.03')); // true
console.log(isUSD('$0.03')); // true 这种情况千万不要漏掉
console.log(isUSD('$1,023,032.033')); // false
console.log(isUSD('$1,023,032.3')); // falsefunction isUSD(str) {return /^\$(([1-9]\d{0,2}(,\d{3})*)|0)(\.\d{2})?$/.test(str);
}
小小总结,希望对大家有所帮助!一起加油~
正则表达式匹配USD格式相关推荐
- oracle 正则表达式匹配日期格式,利用正则表达式找出不合符的日期
很多时候我们的日期可能存放的是字符串类型,在插入的时候也很有可能插入的日期格式不正确, 因此我们需要找出这些不合符的日期格式,来此来修正.当然可以使用TO_DATE函数一个一个的转换来找出不合法的日期 ...
- 判断是否为USD格式
题目描述 给定字符串 str,检查其是否符合美元书写格式 1.以 $ 开始 2.整数部分,从个位起,满 3 个数字用 , 分隔 3.如果为小数,则小数部分长度为 2 4.正确的格式如:$1,023,0 ...
- Python中正则表达式用法 重点格式以这个为准_首看_各种问题
20210811 https://www.jb51.net/article/101258.htm 一.惰性模式的概念: 此模式和贪婪模式恰好相反,它尽可能少的匹配字符以满足正则表达式即可,例如: va ...
- python正则匹配ip地址_Python正则表达式匹配和提取IP地址
Linux No.1 IPv4 下面是IPv4的IP正则匹配实例: 简单的匹配给定的字符串是否是ip地址 import re if re.match(r"^(?:[0-9]{1,3}.){3 ...
- Notepad++中用正则表达式匹配中文
通常正则表达式匹配中文可以利用Unicode的特点,使用[\u4e00-\u9fa5]匹配.但在Notepad++中不能正常使用. 解决方法是,首先将编码转换成Unicode(菜单->格式-&g ...
- python re正则提取ip地址_Python正则表达式匹配和提取IP地址
No.1 IPv4 下面是IPv4的IP正则匹配实例: 简单的匹配给定的字符串是否是ip地址 import re if re.match(r"^(?:[0-9]{1,3}\.){3}[0-9 ...
- 【转】正则表达式 匹配中文,英文字母和数字及_的写法!同时控制长度
[转]正则表达式 匹配中文,英文字母和数字及_的写法!同时控制长度 using System.Text.RegularExpressions; 匹配中文:[\u4e00-\u9fa5] 英文字母:[a ...
- java 匹配任意字符_正则表达式匹配任意字符(包括换行符)
正则表达式中,"."(点符号)匹配的是除了换行符"\n"以外的所有字符.但有时候我们需要匹配包括换行符在内的字符,经过一番搜索,发现了几种正则表达式匹配任意字符 ...
- python re正则提取ip地址_python 正则表达式匹配IP地址
一.实验环境 1.Windows7x64_SP1 2.anaconda2.5.0 + python2.7(anaconda集成,不需单独安装) 3.pyinstaller3.0 二.实验目的 从tex ...
最新文章
- vue 组件之间的传值
- Python学习笔记:函数
- python输入一组数字存到列表_Python如何使用输入传递多个值并将它们存储在一个列表中(简单版本),python,怎么,input,传入,储存,到...
- 图数据库与关系数据库的实验对比——意大利商会 InfoCamere 案例
- 电脑位数怎么看_看完了这篇文章你就知道怎么选电脑了...
- mac下hive-1.2.2-src版本的编译
- DevExpress控件介绍
- 【SRH】------node创建简单的服务器
- php怎么重命名文件,phpstorm如何进行文件或者文件夹重命名
- 机器学习- 吴恩达Andrew Ng Week9 知识总结 Anomaly Detection
- oracle spatial 数据导入_Oracle Spatial导入shp数据
- 智能暖风机——7.LED驱动和断电记忆功能
- 怎么恢复苹果手机通讯录
- oracle语句update使用case when连续更新
- 【维修】如何成功做网线?
- 浅谈char类型范围
- PDF编辑管理工具Cisdem PDFMaster Mac
- 串口转以太网模块:WIZ108SR(用户手册)
- 2022第二届网刃杯网络安全大赛
- 华为ACL原理及配置
热门文章
- T1072 鸡尾酒疗法(信息学一本通C++)
- [PHP]进阶教程:将wav文件转换成图像文件并在页面中显示
- 告诉你,如何成就DBA职业生涯
- 口布杯花的60种叠法_杯花折叠方法
- docker重启后启动失败Failed to start Docker Application Container Engine.
- 光伏系统MPPT、恒功率控制切换MATLAB仿真
- 深入理解计算机系统(CSAPP) attack-lab详解
- 腾讯音乐 知乎 微信公众账户 搜狗
- c语言程序设计教程上机报告,华中科技大学标准C语言程序设计上机试题、答案及报告格式...
- C盘被$ESTBAK$占用100G