js验证16进制和十进制

文章介绍了两个JavaScript函数,checkhex()和checkdec(),用于在用户键盘按键松开时通过正则表达式实时验证输入是否为有效的16进制或十进制数值。函数利用input元素的onkeyup事件和value属性获取输入值,并通过父元素找到相关错误提示标签显示验证结果。
/* 判断是否为16进制 */
function checkhex(hex) {
    var hexvalue = hex.value;
    console.log(hexvalue);
    var reghex = /^[A-Fa-f0-9]{1,4}$/;
    var label = hex.parentElement.getElementsByClassName("error")[0];
    if (reghex.test(hexvalue)) {
        console.log(true);
        label.textContent = "✔"
        return true;
    } else {
        console.log(false);
        label.textContent = "请输入正确的16进制"
        return false;
    }

}

/* 判断是否为十进制 */
function checkdec(dec) {
    var decvalue = dec.value;
    console.log(decvalue);
    var regdec = /^-{0,1}\d*\.{0,1}\d+$/;
    var label = dec.parentElement.getElementsByClassName("error")[0];
    if (regdec.test(decvalue)) {
        console.log(true);
        label.textContent = "✔"
        return true;
    } else {
        console.log(false);
        label.textContent = "请输入正确的十进制"
        return false;
    }

}
<div>
<input type="text" onkeyup="checkhex(this)">
<i class="error" style="color: red;"></i>
</div>

<div>
<input type="text" onkeyup="checkhex(this)">
<i class="error" style="color: red;"></i>
</div>

我是使用正则表达式进行判断的,onkeyup是在键盘按键松开时就执行函数。贴上效果图

其中

<input type="text" onkeyup="checkhex(this)">

checkhex(this)函数则是表示当前元素为参数,即input元素,把当前参数传到js函数中,而

 var hexvalue = hex.value;

中的hex.value则是在input中输入的文本值,执行

console.log(hex)
    var hexvalue = hex.value;

var label = hex.parentElement.getElementsByClassName("error")[0];

中,parentElement表示父元素,该句代码含义为把hex,即input元素的父元素即div下获取第0个class名称为error的元素。

新手第一次写,如有理解错误,可以在评论区多多讨论😄

### JavaScript中将16进制数值转换为字符串的方法 在JavaScript中,可以使用多种方法将16进制数值转换为字符串。以下是几种常见的实现方式: #### 方法一:使用`String.fromCharCode``parseInt` 通过`parseInt`函数将16进制字符串解析为十进制整数,然后使用`String.fromCharCode`将其转换为对应的字符。 ```javascript function hexToChar(hex) { return String.fromCharCode(parseInt(hex, 16)); } ``` 例如,将`"41"`(十六进制的A)转换为字符: ```javascript console.log(hexToChar("41")); // 输出: "A" [^1] ``` #### 方法二:使用模板字符串与加法运算 通过将16进制字符串前缀加上`\x`,并利用JavaScript的字符串解析机制直接生成字符。 ```javascript function hexToChar(hex) { return eval(`'\\x${hex}'`); } ``` 例如: ```javascript console.log(hexToChar("41")); // 输出: "A" [^5] ``` #### 方法三:批量转换16进制数组为字符串 如果需要将一个包含多个16进制值的数组转换为对应的字符串数组,可以结合`map`方法进行处理。 ```javascript function hexArrayToStringArray(hexArray) { return hexArray.map(hex => String.fromCharCode(parseInt(hex, 16))); } ``` 例如: ```javascript const hexArray = ["48", "65", "6c", "6c", "6f"]; console.log(hexArrayToStringArray(hexArray)); // 输出: ["H", "e", "l", "l", "o"] [^5] ``` #### 注意事项 - **精度限制**:JavaScript中的数字类型是基于IEEE 754标准的双精度浮点数,因此对于非常大的16进制数值可能会出现精度丢失的问题[^4]。 - **错误处理**:在实际应用中,建议对输入数据进行验证,确保其为合法的16进制字符串。可以通过正则表达式等方式进行初步校验。 - **性能优化**:如果需要对大量数据进行转换,可以考虑使用更高效的算法或库来提升性能。 ### 示例代码 以下是一个完整的示例,展示如何将单个16进制数值以及16进制数组转换为字符串: ```javascript // 单个16进制数值转换 function hexToChar(hex) { return String.fromCharCode(parseInt(hex, 16)); } // 批量转换16进制数组 function hexArrayToStringArray(hexArray) { return hexArray.map(hex => String.fromCharCode(parseInt(hex, 16))); } // 测试 console.log(hexToChar("41")); // 输出: "A" const hexArray = ["48", "65", "6c", "6c", "6f"]; console.log(hexArrayToStringArray(hexArray)); // 输出: ["H", "e", "l", "l", "o"] [^5] ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值