在正则表达式中禁止“//”(javascript)

时间:2012-03-23 08:56:54

标签: javascript regex

我想在我的正则表达式中禁止双正斜杠(//)(因此允许单个/),但我的解决方案不起作用。

在字符串的开头和结尾也必须有NO /(这项工作!):<​​/ p>

/^[^/][a-z0-9-/]+[^/]$$/

这允许举例如///示例//但不是/ dzkoadokzd /// zdkoazaz

现在我想在彼此之后禁止多个“/”。 我试过这个但它不起作用(我是正则表达式的新手):

/^[^/]([a-z0-9-]+[/]{1})+[^/]$$/

3 个答案:

答案 0 :(得分:3)

/是正则表达式中的元字符。您需要使用反斜杠(\/

来转义它
/^[^\/]([a-z0-9-]+[\/]{1})+[^\/]$/

答案 1 :(得分:3)

不确定这是否是一个要求,但是来自jperovic的正则表达式,使用[^ /]将接受任何字符,这不是斜杠/(所以它也会传递像“ @ abcd / efgh”这样的字符串/ ijkl /#“(注意@和#),但在正则表达式的其他部分我们尝试将字符限制为[a-z0-9-]。如果我们想限制字符范围完整的字符串,检查下面的正则表达式。

/^[a-z0-9\-](?:[a-z0-9\-]|\/(?!\/))+[a-z0-9\-]$/

答案 2 :(得分:1)

BTW,如果您只是想在开始或结束时测试斜线或在其他地方测试加倍:

function badSlash(s) {

  var re = /^\/|\/\/|\/$/;

  return re.test(s);
}

您可以为您不想要的任何其他模式添加另一个OR,例如

  var re = /^\/|\/\/|\/$|[^a-z0-9\/]/;