我正在使用正则表达式在字符串中寻找字母(a到m)。我已经找到了一种无需使用正则表达式就可以执行相同操作的方法,但是可以使用正则表达式来做到这一点,并且在对字符串中的特定字母进行计数时使用正则表达式是好还是坏的主意?

当使用正则表达式的findError.length值对我来说是错误的时,另一种方法可以正常工作

这就是我使用正则表达式搜索字母的方式

function printerError(s) {
            let findError = s.match(/[a-mA-M]+/g).toString();
            let sum = (s.length - findError.length);
            return sum + '/' + s.length;
        }

    console.log(printerError("anananaanaann"));


**
工作代码

    function printerError2(s) {
      const goodLetters = Array.from("abcdefghijklm");
      let total = s.length;
      let badLetters = 0;
      for (let i = 0; i < total; i++) {
        if ( !goodLetters.includes(s.charAt(i)) ) {
          badLetters++;
        }
      }
      return `${badLetters}/${total}`;
    }

console.log(printerError2("anananaanaann"));

最佳答案

这将返回您字符串中a-mA-M之间的字符数:



function printerError(s) {
  return s.length - s.replace(/[a-mA-M]/g, '').length;
}

console.log(printerError("anananaanaann"));





或者,您甚至可以:



function printerError(s) {
  return (s.match(/[a-mA-M]/g) || []).length;
}

console.log(printerError("anananaanaann"));

09-25 19:21