当字符串包含2个非连续正斜杠时,正则表达式返回false(负向前瞻)

时间:2015-07-07 08:49:57

标签: javascript regex pattern-matching

我正在尝试构建一个正则表达式,当只找到一个正斜杠时,该正则表达式应该匹配;当找到2个或更多正斜杠时,我会尝试将其匹配。不使用捕获组,如果匹配则为olny,正则表达式由javascript执行。

/this-should-match
/this-should/not-match

我尝试了几个regexps,包括使用否定前瞻,但我似乎无法找到解决方案。我试过的一些模式:

/\/(.*)(?!\/)/i
/\/(.*)[?!\/]/i
/\/(.*[?!\/])/i

这里的任何正则表达式天才都知道解决方案吗?我知道正则表达式是为了找到一个模式的出现,但应该有一些解决方案吗?

1 个答案:

答案 0 :(得分:2)

使用否定的字符类而不是环顾四周。

^\/[^/]+$
  • ^将正则表达式锚定在字符串的开头。

  • [^/]否定了字符类。匹配/

  • 以外的任何内容
  • $将正则表达式锚定在字符串的末尾。确保在模式匹配的字符串后面没有任何内容。

Regex Demo

示例

"/this-should-match".match(/^\/[^/]+$/)
=> ["/this-should-match"]

"/this-should-match/not-match".match(/^\/[^/]+$/)
=> null