在Javascript中查找输入字段编号中的特定数字

在Javascript中查找输入字段编号中的特定数字,javascript,validation,Javascript,Validation,我正在开发一个Binary2Decimal convertor应用程序,当用户在输入字段中输入0和1以外的值时,单击convert应该会提醒用户输入有效的二进制数 下面是我的代码: const binary=document.querySelector('.decimalConvertor__binary--bin'); const decimal=document.querySelector('.decimalConvertor__decimal--dec'); const submit=d

我正在开发一个Binary2Decimal convertor应用程序,当用户在输入字段中输入0和1以外的值时,单击convert应该会提醒用户输入有效的二进制数

下面是我的代码:


const binary=document.querySelector('.decimalConvertor__binary--bin');
const decimal=document.querySelector('.decimalConvertor__decimal--dec');
const submit=document.querySelector('.decimalConvertor__submit--sub');
submit.addEventListener('click',e=>{
const bin=二进制.value;
如果(bin!=''&''){
如果(bin.length=0;i--){
dec+=parseInt(bin[i])*Math.pow(2,bin.length-1-i);
}
十进制值=dec
}否则{
警报('输入少于8个数字')
}
}否则{
警报('请输入有效的二进制数')
} 
});

尝试此操作,它使用正则表达式测试字符串是否包含除1和0以外的数字,如果包含,则显示输入有效二进制数的警报:

var re = new RegExp("([23456789])");

submit.addEventListener('click', e => {
  const bin = binary.value;
  if(bin && !re.test(bin)) {
    if(bin.length <=8) {
      let dec = 0;

    for (let i = bin.length-1; i >=0; i--) {
      dec += parseInt(bin[i]) * Math.pow(2, bin.length - 1 - i);
    }
    decimal.value = dec
    }else {
      alert('enter less than 8 numbers')
    }
  }else {
    alert('Please enter valid binary number')
  } 
});
var re=new RegExp([23456789]);
submit.addEventListener('click',e=>{
const bin=二进制.value;
如果(bin&!重新测试(bin)){
如果(bin.length=0;i--){
dec+=parseInt(bin[i])*Math.pow(2,bin.length-1-i);
}
十进制值=dec
}否则{
警报('输入少于8个数字')
}
}否则{
警报('请输入有效的二进制数')
} 
});

这是一个可以创建正则表达式的网站,它将向您显示它们的解释:。在那里输入正则表达式以获得解释

您可以为此使用正则表达式:
/^[0-1]*$/
将只测试0和1。您可以使用
regex.test(bin)

submit.addEventListener('click',e=>{
正则表达式=/^[0-1]*$/;
const bin=二进制.value;
if(bin&®ex.test(bin)){
如果(bin.length=0;i--){
dec+=parseInt(bin[i])*Math.pow(2,bin.length-1-i);
}
十进制值=dec
}
否则{
警报('输入少于8个数字')
}
}
否则{
警报('请输入有效的二进制数')
} 
});

PS:您的代码中还有一个bug。在您编写的if子句中
bin!==''&&''这在
bin!=''时总是正确的
,这意味着
&&&
是冗余的。

我注意到代码中存在一些问题(例如
if
语句中的条件),但它应该可以工作。您的解决方案有什么问题?我需要添加以下代码:如果用户输入0和1以外的数字(例如:101012),然后单击convert,alert('not valid binary number')我尝试了这个正则表达式,但它仍然在转换二进制值(10102=22)。我更新了我的答案,请重试,我更新了正则表达式。。让我知道在您删除//git后,逻辑发生了什么变化。这正是regex的创建方式。如果您像
var re=new RegExp(([23456789])”
那样创建它,那么黑色斜杠是不必要的,但是如果您像
var regex=/^[0-1]*$/
那样创建它,那么它们是表示代码是regex所必需的
submit.addEventListener('click', e => {
    regex = /^[0-1]*$/;
    const bin = binary.value;
    if(bin && regex.test(bin)) {
        if(bin.length <= 8) {
            let dec = 0;
            for (let i = bin.length-1; i >=0; i--) {
                dec += parseInt(bin[i]) * Math.pow(2, bin.length - 1 - i);
            }
            decimal.value = dec
        }
        else {
            alert('enter less than 8 numbers')
        }
    }
    else {
        alert('Please enter valid binary number')
    } 
});