Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/448.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何检查字符串是否只包含某些字母,如果包含其他字母,则返回false_Javascript_Arrays_String_Validation - Fatal编程技术网

Javascript 如何检查字符串是否只包含某些字母,如果包含其他字母,则返回false

Javascript 如何检查字符串是否只包含某些字母,如果包含其他字母,则返回false,javascript,arrays,string,validation,Javascript,Arrays,String,Validation,我试图获取输入:文本字段的值,然后检查该字符串是否只有有效字符。有效字符为“G、C、T、A”。我试图为字符串编写验证,这样,如果它有无效的字母,它会将其踢回给用户,并只要求有效的字母 如何仅检查字符串中的某些字符 let rnaTransResult; let validLetters = ["G", "C", "T", "A"]; runBtn.addEventListener('click', function(){ let dna = userInput.value.toUpperC

我试图获取输入:文本字段的值,然后检查该字符串是否只有有效字符。有效字符为“G、C、T、A”。我试图为字符串编写验证,这样,如果它有无效的字母,它会将其踢回给用户,并只要求有效的字母

如何仅检查字符串中的某些字符

let rnaTransResult;
let validLetters = ["G", "C", "T", "A"];

runBtn.addEventListener('click', function(){
  let dna = userInput.value.toUpperCase();

  rnaTranscribe(dna);

  result.textContent = rnaTransResult;
});

function rnaTranscribe(dna){
  let dnaArray = dna.split('');

  for(let x = 0; x < dnaArray.length; x++){

    if(dnaArray[x] != validLetters[x]){
      console.log("invalid letters");
      return false;
    } else {
      for(let i = 0; i < dnaArray.length; i++){
        if(dnaArray[i] === "G"){
         // console.log("G swap for C");
          dnaArray[i] = "C";
        }  
      }
      console.log("end result: " + dnaArray);
      rnaTransResult = dnaArray.join('');
      console.log("Transcription complete - Result: " + rnaTransResult);
    }
 };

}
让我们看看结果;
设validLetters=[“G”,“C”,“T”,“A”];
runBtn.addEventListener('click',function(){
让dna=userInput.value.toUpperCase();
rna转录(dna);
result.textContent=rnaTransResult;
});
功能RNA转录(dna){
设dnaArray=dna.split(“”);
for(设x=0;x
我试过几种不同的方法,但都不管用。我现在不知所措,我很想理解这种做法背后的理念。提前谢谢你

您可以使用以下功能:

...
let letter = dnaArray[x];
if (validLetters.some(l => l === letter))
...
您可以使用以下功能:

...
let letter = dnaArray[x];
if (validLetters.some(l => l === letter))
...

作为一个非常简单的解决方案:循环遍历字符串的长度并进行比较,以查看数组是否包含当前索引处的值。有更好的方法可以做到这一点,但这应该清楚地表明发生了什么以及背后的逻辑

让validleters=[“G”,“C”,“T”,“A”];
让dnaArray=“GCTATAB”
for(设x=0;x}
作为一个非常简单的解决方案:循环遍历字符串的长度并进行比较,以查看数组是否包含当前索引处的值。有更好的方法可以做到这一点,但这应该清楚地表明发生了什么以及背后的逻辑

让validleters=[“G”,“C”,“T”,“A”];
让dnaArray=“GCTATAB”
for(设x=0;x}
您也可以使用regex实现这一点

[^GCTA]
将匹配不在允许字符中的任何内容,因此您可以执行以下操作:

if(dnaArray.match(/[^GCTA]/)){//if dnaArray contains anything that isn't G,T,C,A
  ...
}

您也可以使用regex实现这一点

[^GCTA]
将匹配不在允许字符中的任何内容,因此您可以执行以下操作:

if(dnaArray.match(/[^GCTA]/)){//if dnaArray contains anything that isn't G,T,C,A
  ...
}

const isValid=str=>/[^GCTA]/.试验(str)
或者删除双负片并使用
/^[GCTA]*$/.test(str)
,这可能更容易阅读。
const isValid=str=>/[^GCTA]/.试验(str)
或者删除双负数并使用
/^[GCTA]*$/.test(str)
,这可能更容易阅读。虽然使用正则表达式看到答案很好,但为什么要使用
match
g
标志?关于匹配,因为我不知道有更好的选择。
g
标志是不需要的,但我以前没有意识到。请看-这在这里更可取,但不会从根本上改变任何东西。我之所以提到它,是因为我之前曾发布过一条关于regex的评论,不知道它是否被忽视了。谢谢你的链接。是的,它没有被注意到,我的坏。谢谢你有用的回答!我一直认为使用regexp是一个不错的选择,但老实说,作为一名javascript程序员新手,我还没有获得很多使用regexp的经验。这将是一个伟大的起点。再次感谢!虽然很高兴看到一个使用正则表达式的答案,但为什么要使用
match
g
标志?关于match,这是因为我不知道有更好的选择。
g
标志是不需要的,但我以前没有意识到。请看-这在这里更可取,但不会从根本上改变任何东西。我之所以提到它,是因为我之前曾发布过一条关于regex的评论,不知道它是否被忽视了。谢谢你的链接。是的,它没有被注意到,我的坏。谢谢你有用的回答!我一直认为使用regexp是一个不错的选择,但老实说,作为一名javascript程序员新手,我还没有获得很多使用regexp的经验。这将是一个伟大的起点。再次感谢!