-2

我如何让 JS 在不使用 regex的情况下忽略不是字母的所有内容(例如 abc ...)。

Examples
match("abcdef","@C2D!") returns true
match("abcdef","CAfe") returns true
match("abcdef","CG") returns false

这是我到目前为止所做的......

function match(string, pattern) {
    string = string.toLowerCase();
    pattern = pattern.toLowerCase();
    for (var i = 0, l = string.length; i < l; ++i) {
        if(pattern.indexOf(string[i]) === -1) return false;
    }
    return true;
}
alert(match("abcdef", "@C2D!"));

在这里小提琴:http: //jsfiddle.net/5UCwW/

4

2 回答 2

1

使用如下的正则表达式[^A-Za-z]

var re = /[^A-Za-z]/g;

function match(string, pattern) {
    string = string.toLowerCase();
    pattern = pattern.toLowerCase().replace(re, "");
    for (var i = 0, l = string.length; i < l; ++i) {
        if(pattern.indexOf(string[i]) === -1) return false;
    }
    return true;
}

作为没有 reg ex 的函数

var sanitize = function (str) { 
  var newStr = "", i, charCode;

  for (i = 0; i < str.length; ++i) {
    charCode = str.charCodeAt(i);  
    if (charCode >= 65 && charCode <= 90 ||
        charCode >= 97 && charCode <= 122)  {
      newStr += str[i];
    } 

  return newStr;
}

编辑:Az 使用从大写 a 到小写 z 的 ascii 值范围。因此这包括]、\、[、^、_ 和`。我不知道这一点,[A-Za-z] 是正确的模式。

于 2013-11-09T17:49:36.050 回答
1

在字符串上使用 Javascript 的内置匹配方法:

 var mystring = '@C2D!';
 mystring.match(/[^a-zA-Z]/gi).length returns true

 var mystring2 = 'abcdef';
 mystring2.match(/[^a-zA-Z]/gi).length returns false

我假设您正在寻找小写和大写字母。如果只是更低,请使用 [^az]。

有关匹配方法的更多信息,请访问:http: //www.w3schools.com/jsref/jsref_match.asp

于 2013-11-09T17:54:27.537 回答