javascript - 测试字符串是否每个字母两侧都有 '+' 符号

标签 javascript regex boolean symbols

这个程序应该测试 str,如果 str 中的每个字母两边都有一个“+”号,那么该函数应该返回 true。否则,它应该返回 false。我不断收到错误“SyntaxError:无效量词”。

function SimpleSymbols(str) { 
  var boolean = false;
  for(var i=1;i<(str.length-1);i++){
    if(/\w/.test(str.charAt(i))){
      if(str.charAt(i-1).match('+') && str.charAt(i+1).match('+')){
        boolean = true;
      }else{
        boolean = false;
      }
    }
  }
  str = boolean;
  return str; 

}

最佳答案

match 用于正则表达式,因此它尝试将 '+' 转换为正则表达式,但失败,因为 /+/ 不是有效的正则表达式(应为 '\\+'/\+/)。但直接测试每个字符会更容易,如下所示:

  if(str.charAt(i-1) == '+' && str.charAt(i+1) == '+'){

另请注意,/\w/ 匹配任何“单词”字符,包括字母、数字和下划线。要仅使用个字母字符,应使用/[a-z]/i(末尾的i使其不区分大小写,因此它将也匹配大写字母)。

但是反转条件似乎要简单得多。只需测试字符串是否包含+符号包围的字母或字符串开头或结尾的字母,然后返回false 如果是这样,就像这样:

function SimpleSymbols(str) { 
    return ! /(^|[^+])[a-z]|[a-z]([^+]|$)/i.test(str);
}

关于javascript - 测试字符串是否每个字母两侧都有 '+' 符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21358861/

相关文章:

c++ - 用于检测分号终止的 C++ for 和 while 循环的正则表达式

javascript - 在我的 Rails 投票系统中包含 Ajax/JS

javascript - 如何通过 jQuery 在元素前插入复选框

php - 改进将字符串转换为可读的 url

regex - 使用 postgres 正则表达式捕获一个点

c# - 使用 if 语句返回 bool

jquery - 表单提交复选框将值设置为 "on"而不是 "true"

c++ - 具有 boolean 值的奇怪行为

javascript - 函数内增长和收缩的变量的空间复杂度

javascript - setInterval淡入然后淡出纯javascript,没有jquery或css