你这个需求确实挺奇怪的,先假定你要查找的 key 里面没有什么特殊字符,那用正则表达式匹配的话这个函数可以这么写,实际情况要写一个非常严密的正则表达式要复杂一些:
function getValue( key, str ) {
var m = str.match( new RegExp('"' + key + '"\:"?(.+?)"?[,}]') )
return m ? m[ 1 ] : false
}
var str = '{"success":true,"message":"修改成功"}'
getValue( 'success', str ) // return true
getValue( 'message', str ) // return 修改成功
但是按照你的例子来看,你这个字符串是一个合法的 JSON,所以如果是字符串的话,你可以直接使用 JSON 类去解析:
var str = '{"success":true,"message":"修改成功"}'var res = JSON.parse( str )
alert( res.success ) // true
alert( res.message ) // 修改陈功
如果不一定是一个标准的 JSON,或者你的环境还不支持 JSON(比如 IE7或更早的 IE 浏览器),可以通过下面方法将其解析成一个 JS 字面量对象:
var str = '{"success":true,"message":"修改成功"}'var res = (new Function("return (" + str + ")"))()
alert( res.success )
alert( res.message )
在中括号中的小数点就表示小数点字符obj.value = obj.value.replace(/[^\d.]/g,"")[^\d.] 表示所有除了数字和小数点以外的字符这个等式将所有其它字符都替换为空,只保留obj.value中的数字和小数点