我正在尝试构建一个正则表达式,当只找到一个正斜杠时,该正则表达式应该匹配;当找到2个或更多正斜杠时,我会尝试将其匹配。不使用捕获组,如果匹配则为olny,正则表达式由javascript执行。
/this-should-match
/this-should/not-match
我尝试了几个regexps,包括使用否定前瞻,但我似乎无法找到解决方案。我试过的一些模式:
/\/(.*)(?!\/)/i
/\/(.*)[?!\/]/i
/\/(.*[?!\/])/i
这里的任何正则表达式天才都知道解决方案吗?我知道正则表达式是为了找到一个模式的出现,但应该有一些解决方案吗?
答案 0 :(得分:2)
使用否定的字符类而不是环顾四周。
^\/[^/]+$
^
将正则表达式锚定在字符串的开头。
[^/]
否定了字符类。匹配/
$
将正则表达式锚定在字符串的末尾。确保在模式匹配的字符串后面没有任何内容。
示例强>
"/this-should-match".match(/^\/[^/]+$/)
=> ["/this-should-match"]
"/this-should-match/not-match".match(/^\/[^/]+$/)
=> null