解题思路
正则表达式匹配提取数字。
let reg = /^[\s]*[-|\+]?[0-9]+/
// 匹配以0或多个空格,'+'或'-'开头的数字,
// '+'需要进行转义,'?'表示0个或1个,表示开头,+表示1个或多个,*表示0个或者多个
代码
/**
* @param {string} str
* @return {number}
*/
var strToInt = function (str) {
let reg = /^[\s]*[-|\+]?[0-9]+/
let res = str.match(reg)
if (res) {
let tem = parseInt(res[0])
if (tem > (Math.pow(2, 31) - 1)) { // 按照题目要求,输出范围是[-2^31, 2^31 - 1]
return 2147483647
} else if (tem < -Math.pow(2, 31)) {
return -2147483648
}
return tem
}
return 0
};
正则表达式真是一个高深强大的好工具。