Javascript 如何检查字符串是否只包含某些字母,如果包含其他字母,则返回false
我试图获取输入:文本字段的值,然后检查该字符串是否只有有效字符。有效字符为“G、C、T、A”。我试图为字符串编写验证,这样,如果它有无效的字母,它会将其踢回给用户,并只要求有效的字母 如何仅检查字符串中的某些字符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
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的经验。这将是一个伟大的起点。再次感谢!