Javascript 需要一个RegExp来查找未被加号包围的字符

Javascript 需要一个RegExp来查找未被加号包围的字符,javascript,regex,error-handling,Javascript,Regex,Error Handling,有人能帮忙吗?我需要对一个字符串进行排序,以检查a-z中是否有而不是两边都被加号包围的单个字符。具体请帮助 例如,我将得到长度至少为1个字符的字符串,如下所示: Input=“+d+=3=+s+”(返回“true”--所有字符都用加号包装) 或Input=“f++d+(返回“false”--“f”没有边框。) 从上面我想自己返回一个true或false值,所以我将使用regex.test(str)函数来实现 re:到目前为止我尝试过的例子->/\b*\w\b*/g;,/[^+]\=\w[^+]\

有人能帮忙吗?我需要对一个字符串进行排序,以检查a-z中是否有而不是两边都被加号包围的单个字符。具体请帮助

例如,我将得到长度至少为1个字符的字符串,如下所示:

Input=“+d+=3=+s+”(返回“true”--所有字符都用加号包装)

Input=“f++d+(返回“false”--“f”没有边框。)

从上面我想自己返回一个true或false值,所以我将使用regex.test(str)函数来实现


re:到目前为止我尝试过的例子->
/\b*\w\b*/g;,/[^+]\=\w[^+]\=\/g;

既然JavaScript没有后视功能,而不仅仅是一个简单的
regex.text(str)
,我想你可能需要一些稍微复杂一点的东西

如果删除了由
+
包围的所有字符,则如果结果中还有剩余字符,则需要
结果,如果没有,则需要
。因此:

if (!/[a-z]/.test(str.replace(/\+[a-z](?:\+[a-z])*\+/g, ""))) {
    // All characters surrounded by `+` (or there were none to start with)
} else {
    // Some unbounded
}
这个表达式有点复杂,所以:

  • \+
    -文字
    +
    (系列的第一个)
  • [a-z]
    -后跟字符a-z
  • (?:\+[a-z])*
    -后跟零次或多次出现的文字
    +
    和字符a-z
  • \+
    -文字
    +
    (系列的最后一个结尾)
这是为了处理
+b+
以及
+b+b+b+b+

这将为一个没有任何a-z字符开头的字符串提供假阳性,因此如果有可能,请提前检查,例如:

if (!/[a-z]/.test(str)) {
    // String has no a-z characters at all
} else if (!/[a-z]/.test(str.replace(/\+[a-z](?:\+[a-z])*\+/g, ""))) {
    // Has a-z characters, all of them surrounded by `+`
} else {
    // Has a-z characters, at least one not surrounded by `+`
}

谢谢。您将如何处理像
“+b+b+”
?它似乎返回
“+b”
,并相应地给出一个假阴性结果。@user3698316:“您将如何处理像
“+b+b+”
”这样的字符串?“嗯…糟糕…:-|Hmmm……Nvm。似乎我已经修复了它:例如
var input=(!/[a-z]/.test(str.replace(/\+[a-z]\+[a-z]“
有什么改进的方法吗?我觉得肯定有。@user3698316:不幸的是,这只适用于
“+b+b+”
,而不适用于
“+b+b+”
。但你的思路是正确的,一秒钟。