0

我有一个任务,有点卡住了。

需要将输入字符串与常量中的值匹配,但我正在匹配单个字符。

我的常数是ALPHABET = 'ABCDEFGHIJKLMNOPQRSTUWXYZ'

我的意见是,var input = 'ABOZ'

我需要一个测试来检查输入变量中的每个字母是否存在于 ALPHABET 常量中。

希望我说得通。

干杯

4

4 回答 4

3

这是您问题的单行答案:

(ALPHABET.match(new RegExp((input.split('').join('|')), 'g'))).length == input.length

true只有当所有字符input都存在时才会返回ALPHABET

这是一个工作演示http://jsfiddle.net/kayen/akL4A/

于 2012-10-15T09:41:46.630 回答
0

在 Firefox 16 中测试并运行。请记住,此实现不会验证输入是否为空或其他防御性检查。你应该自己做。这是区分大小写的结果。

不区分大小写 :

    function validInput(input) {
        var ALPHABET = "ABCDEFGHIJKLMNOPQRSTUWXYZ";
        for (var i = 0; i < input.length; i++) {
            var charAtI = input.charAt(i);
            var indexOfCharAtI = ALPHABET.indexOf(charAtI);
            if (indexOfCharAtI < 0) {
                return false;
            }
        }
        return true;
    }

不区分大小写 :

    function validInput(input) {
        var ALPHABET = "ABCDEFGHIJKLMNOPQRSTUWXYZ";
        for (var i = 0; i < input.length; i++) {
            var charAtI = input.charAt(i);
            charAtI = charAtI.toUpperCase();
            var indexOfCharAtI = ALPHABET.indexOf(charAtI);
            if (indexOfCharAtI < 0) {
                return false;
            }
        }
        return true;
    }
于 2012-10-15T09:36:11.690 回答
0

这是一个函数示例,该函数将返回 true 表示匹配或 false 表示不匹配。(请注意,这是一个区分大小写的测试)。

var ALPHABET = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
var input = 'ABOZ';

function testStr(str, constant){
  var matchFlag = true;
  var strSplit = str.split("");
  for(var i=0; i<strSplit.length;i++){
    if(constant.indexOf(strSplit[i]) == -1){
       matchFlag = false;
    }
  }
  return matchFlag;
} 
alert(testStr(input, ALPHABET)); //TRUE

演示

于 2012-10-15T09:36:12.583 回答
0

一种方法是循环输入并搜索它是否以常量退出

可能的代码

var ALPHABET = 'ABCDEFGHIJKLMNOPQRSTUWXYZ';
var input = 'ABOZ'
var count = 0;  
    for(x in input) {
        if(ALPHABET.indexOf(input[x])>-1){
            count++;
            continue;
        }
        else{
            break;
        }

    }
if(count==input.length) {
    alert("true");       
}

演示

于 2012-10-15T09:34:50.233 回答