需要一个RegEx才能找到没有加号的字符

时间:2014-06-02 06:35:35

标签: javascript regex error-handling

有人可以帮忙吗?我需要对一个字符串进行排序,以检查a-z中任何单个字符 NOT 是否被双方的加号包围,具体请帮帮忙?

因此,例如,我将获得至少1个字符长的字符串,如:

Input = "+d+=3=+s+" (returns "true"--all chars are wrapped in pluses)

Input = "f++d+ (returns "false"--the 'f' is not bordered.)

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

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

1 个答案:

答案 0 :(得分:0)

由于JavaScript没有后视,而不仅仅是直接regex.text(str),我认为你可能需要一些非常轻微更复杂。

如果您删除了+所包围的所有字符,那么如果结果中有任何字符,则需要false结果,如果不希望true。所以:

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+

如果字符串中没有任何az字符,则会给出误报,因此如果可能,请提前检查,例如:

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 `+`
}