JavaScript - 如何确定字母是否被符号包围?

时间:2016-11-28 01:17:42

标签: javascript regex

我正在尝试解决JavaScript编码练习,我的代码错了,我看不出原因。

任务是:

  

取一个字符串,如果字符串中的每个字母都被一个'+'符号包围,则返回true,否则返回false。

它适用于大多数情况,但不适用于'= a +',例如我不明白为什么。有人可以解释一下吗?

function SimpleSymbols(str) {

    for (var i = 0; i < str.length; i++) {

        if (str[0].match(/[a-z]/i) || str[str.length - 1].match(/[a-z]/i)) {
            return false;
        } else {
            if (str[i].match(/[a-z]/i) && (str[i - 1] !== "+" || str[i + 1] !== "+")) {
                return false;
            } else {
                return true;
            }
        }

    }
}

SimpleSymbols(readline());

2 个答案:

答案 0 :(得分:1)

问题是内部else子句。它应该被消除,相反,该函数应该在true块之后返回for

function SimpleSymbols(str) {

    for (var i = 0; i < str.length; i++) {

        if (str[0].match(/[a-z]/i) || str[str.length - 1].match(/[a-z]/i)) {
            return false;
        } else {
            if (str[i].match(/[a-z]/i) && (str[i - 1] !== "+" || str[i + 1] !== "+")) {
                return false;
            } 
        }

    }

    return true;
}

答案 1 :(得分:0)

你可以匹配这个并返回结果:

^\+(?:[a-z]\+)*$

https://regex101.com/r/1zXUJD/1

查找以'+'开头的字符串,然后查找任意数量的[a-z] +,直到字符串结尾。