正则实践——判断一个单词是否有重复字母

写于2015年4月7日,最新删改于2017年5月29日,可能已过时,请谨慎参考。

要判断一个单词中是否有重复字母非常容易,先用循环尝试一次:

function isIsogram(str) {
    str = str.toLowerCase();
    for (let i = 0; i < str.length - 1; i++) {
        if (str.indexOf(str.charAt(i), i + 1) >= 0) {
            return false;
        }
    }
    return true;
}

这个方法是从左向右检查字符,尝试找出最近的一个相同字符。

换个思路,用正则来处理这个问题将无比简洁:

function isIsogram2(str) {
    return !/(.).*?\1/i.test(str);
}

匹配过程和上述循环相同,性能与循环版相当。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容