![](/img/trans.png)
[英]Javascript - how do I check regex to ensure a string contains at least one sequence of letters/numbers?
[英]How do I check if one string has all elements of the other string at least once
我對編程很陌生,只是學習JavaScript。 這是我嘗試過的方法,但是它實際上檢查字符串的長度,而不是輸入中的元素是否匹配字母中的元素。 我正在嘗試解決include命令:
var alphabet = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l',
'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z'];
var input = prompt("Type in a message","");
for ( i = 0; i < alphabet.length; i++) {
if(input.includes(alphabet[i])) {
alert("Bingo");
} else {
alert("Bollocks!");
}
}
我在代碼中看到的主要問題是,您將針對字母數組中的每個字母發出警報。 在此代碼中,您有一個hit變量,設置為false,如果成功則將其設置為true。
我的方法使用indexOf
,它檢查輸入是否具有字母數組中當前指向字母的任何字母。 如果是這樣,它將返回它的實際索引。 如果沒有,則返回-1:
var alphabet = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z'];
var input = prompt("Type in a message","");
var hit = false;
for( var letter in alphabet ){
if( input.indexOf(alphabet[letter]) !== -1 ){
hit = true;
}
}
if( hit ){ alert( "Bingo" ); }
else { alert( "Bollocks!" ); }
請注意,代碼區分大小寫。 所以M不會匹配任何東西。 您可以通過使用toLowerCase
方法來解決此問題
我不知道你到底是什么意思。 看這個小提琴。 我想這就是你的意思。 我添加了一個變量賓果游戲,並在最后顯示了Bollock警報。
var alphabet = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k',
'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y',
'z'];
var input = prompt("Type in a message", "");
var bingo = false
for (i = 0; i < alphabet.length; i++) {
if (input == (alphabet[i])) {
bingo = true
alert("Bingo");
}
}
if (bingo == false) {
alert("Bollok")
}
我不確定您在做什么,是否要檢查輸入的內容是否與英文字母的小寫字母匹配?
但是通常,正則表達式是一種好方法:
第1步-構建您需要匹配的正則表達式
第2步-檢查是否有其他匹配項
如果您需要檢查輸入中的每個字符都是英文字母的小寫字母
var input = "aahahahaaa"; // try with "nope,nomatch!"
var regex = new RegExp("[a-z]" + "{" + input.length + "}");
console.log(regex);
if (input.match(regex) !== null) console.log("YUP CHAMP")
else console.log("NOPE BLOKE")
如果需要匹配其他字符,只需修改正則表達式。 我無法涵蓋所有情況,但以下是一些可供您測試的情況:
對於大寫字母:
var regex = new RegExp("[a-zA-Z]" + "{" + input.length + "}");
對於以上和空格
var regex = new RegExp("[a-zA-Z\s]" + "{" + input.length + "}");
對於上面和數字
var regex = new RegExp("[0-9a-zA-Z\s]" + "{" + input.length + "}");
快速,干凈,可以處理非常復雜的匹配規則。 專業人士就是這樣做的;)
這是: 小提琴
這里是有關正則表達式的一個很好的教程: regexone
和一個操場為你,你要學會測試正則表達式: 操場
歡迎來到正則表達式的美好世界:)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.