您的位置:首页 > 其它

我发现自己的正则很不熟悉,决定每天练一遍这道题。

2018-03-12 23:41 225 查看
题目出自ScriptOJ

判断美元符号格式

完成一个函数 isUSDFormat 返回 true/false 来判断一个字符串是否符合美元格式:

1. 以 $ 开头

2. 如果是小数,保留两位小数;如果不是小数则不显示小数部分

3. 整数部分从小数点上一位开始每隔三位用 , 分割开来

4. 如果整数部分从数字 0 开始,则只会显示一位 0

例如:

isUSDFormat('$1') // => true
isUSDFormat('$1.0') // => false
isUSDFormat('$100,000.00') // => true
isUSDFormat('$0,000.00') // => false
isUSDFormat('$0.00') // => true
isUSDFormat('$11,23,345.33') // => false
isUSDFormat('$1,123,345.33') // => true


我居然写出了……

const isUSDFormat = (str) => {
var regexp = /^\$((\d|\,)+)(\.?)(\d*)$/,
str_ints,
i,
len;
var res = str.match( regexp );
console.log( res );
if( res ){
// long int
if( res[1].indexOf(",") >= 0 ){
str_ints = res[1].split(",");
if( parseInt( str_ints.join("") ) == 0 ){
return false;
}
for( i in str_ints ){
if( i == 0 && str_ints[i].length > 3){
return false;
}else if( i != 0 && str_ints[i].length != 3 ){
return false;
}
}
// int
}else{
if( String( parseInt( res[1] ) ) != res[1] ){
return false;
}else if( res[1].length > 3 ){
return false;
}
}
// decimal
if( res[3] == "." && res[4].length != 2 ){
return false;
}
return true;
}else{
return false;
}
}


以后要每天写一遍

var regexp = /^\$([1-9]\d{0,2}(,\d{3})*|0)(\.\d{2})?$/;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  正则
相关文章推荐