将字符串中的数字替换为该数字减1 JS

JavaScript026

将字符串中的数字替换为该数字减1 JS,第1张

以下函数可以将字符串中的数字替换为该数字-1,非数字保持不变,0替换为-1

function func(str){

    var output = []

    for(var i = 0, iLen = str.length i < iLen i++){

        if(str[i].match(/\d/)){

            output.push(str[i] - 1 + '')

        }else{

            output.push(str[i])

        }

    }

    return output.join('')

}

func('123abc456def')//"012abc345def"

解释:

str[i].match(/\d/)判断该字符是否为数字

output.push(str[i] - 1 + '')将数字减去1后通过加上空字符串隐式转换为字符串类型

output.push(str[i])将非数字类型的字符串直接放到输出数组中

output.join('')将数组转为一个字符串

^^

正则表达式

:/^-{0,1}\d{1,}.{0,1}\d{1,}$/

先保证obj.value必须是定义了的字符串

通过正则表达式判断是不是数字

/^-{0,1}\d{1,}.{0,1}\d{1,}$/.test(obj.value)

结果返回true或者false说明obj.value是或不是数字

只能输入或粘贴纯数字的:

<input onkeyup="value=value.replace(/[^\d]/g,'')" onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\d]/g,''))">

页面输入框js正则验证输入值为数字,且只保留小数点后两位:

<input type="text" id="aaa" name="aaa" onkeyup="clearNoNum(this)" onblur="clearNoNum(this)"/>

function clearNoNum(obj)

{

//先把非数字的都替换掉,除了数字和.

obj.value = obj.value.replace(/[^\d.]/g,"")

//保证只有出现一个.而没有多个.

obj.value = obj.value.replace(/\.{2,}/g,".")

//必须保证第一个为数字而不是.

obj.value = obj.value.replace(/^\./g,"")

//保证.只出现一次,而不能出现两次以上

obj.value = obj.value.replace(".","$#$").replace(/\./g,"").replace("$#$",".")

//只能输入两个小数

obj.value = obj.value.replace(/^(\-)*(\d+)\.(\d\d).*$/,'$1$2.$3')

}