案例(1):
给定字符串 str,检查其是否符合如下格式 (来源牛客网)
1、XXX-XXX-XXXX
2、其中 X 为 Number 类型
// XXX-XXX-XXXX
function checkFormat(str){
let reg = /^\d{3}-\d{3}-\d{4}$/;
return reg.test(str)
}
let result = checkFormat('1800-555-1212')
console.log(result)
注意要以XXX开头,
- 如果用^没有指定开头,
/\d{3}-\d{3}-\d{4}$/
不足以筛选'1800-555-1212'
; - 需要再加一个约束,把全部字符串与match出来的第一个结果做比较;
- 即
reg.test(str) && str.match(reg)[0] === str
,
还是用'^'
方便些
案例(2):
判断是否符合 USD 格式 描述 给定字符串 str,检查其是否符合美元书写格式
1、以 $ 开始
2、整数部分,从个位起,满 3个数字用, 分隔
3、如果为小数,则小数部分长度为 2
4、正确的格式如:$1, 023, 032.03 或者 $2.03,错误的格式如:$3, 432, 12.12 或者 $34, 344.3
示例:
输入:’$20,933,209.93’ ‘$132.03’ ‘$0.93’
输出:true true true
function isUSD(str) {
let reg = /^\$(([1-9][0-9]{0,2}(,\d{3})*)|0)(\.\d{2})?$/
// return str.match(reg);
return reg.test(str)
}
let res = isUSD('$132.03')
console.log(res);
注意:
- 如果整数部分是多位数,第一位不能为0
- 整数部分长度如果不是3的倍数,只需保证逗号间隔的子串数字长度为3
- 注意小数点在正则中代表任意字符(换行符 \n 除外),需要用转义字符转义