【问题标题】:Is it a bad idea to count specific letters in string using regex?使用正则表达式计算字符串中的特定字母是一个坏主意吗?
【发布时间】:2019-06-07 20:37:49
【问题描述】:

我正在使用正则表达式在字符串中查找字母(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"));

【问题讨论】:

    标签: javascript regex match regex-negation


    【解决方案1】:

    这会返回字符串中 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"));

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-02-09
      • 2014-02-08
      • 2016-07-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多