Javascript 带异常处理的数字基转换

Javascript 带异常处理的数字基转换,javascript,Javascript,我有一个函数,它转换任意有效数字基及其基数的数字的字符串表示形式。如何正确处理无效数字(如在小于11的基数中使用A-K字符)?在无效的情况下,我想返回-1 到目前为止,我使用isNan()检查取得了一定程度的成功,但它以十进制为基础(convert(“5A6E”,10)) 到目前为止,我的代码是: function convert(strNumber, radix) { a = parseInt(strNumber, radix) if(isNaN(a)){ return -

我有一个函数,它转换任意有效数字基及其基数的数字的字符串表示形式。如何正确处理无效数字(如在小于11的基数中使用A-K字符)?在无效的情况下,我想返回-1

到目前为止,我使用isNan()检查取得了一定程度的成功,但它以十进制为基础(convert(“5A6E”,10))

到目前为止,我的代码是:

function convert(strNumber, radix) {
  a = parseInt(strNumber, radix) 

  if(isNaN(a)){
    return -1
  }
  else {
    return a
  }
}
在您的示例“5A6E”中,返回5,因为parseInt就是这样工作的-请参阅文档中的示例:

在上面页面的底部,您将看到一个标题为“一个更严格的解析函数”的部分,它似乎可以使用正则表达式完成您想要的功能

更新:进一步考虑这个问题,“Stricker解析函数”只适用于base 10。为了更灵活,您应该添加一个查看基数的函数,并在此基础上检查strNumber中的无效字符,如果找到,则返回-1,如果没有,则调用parseInt

例如,如果基数=2,则除0和1之外的所有字符都无效。如果是11,则除0-9和“a”之外的所有字符都无效


单调乏味,但它可以做你想做的。

如何失败
convert(“5A6E”,10)
返回
5
。如果我正确理解数字基数,我想这就是问题所在,“5A6E”不应该是十进制基数中的有效数字,因为它由0-9组成。我错了吗?我一开始就在想这个问题,但我想问是否有更优雅的解决方案。谢谢你提供的信息。