我想在我的正则表达式中禁止双正斜杠(//)(因此允许单个/),但我的解决方案不起作用。
在字符串的开头和结尾也必须有NO /(这项工作!):</ p>
/^[^/][a-z0-9-/]+[^/]$$/
这允许举例如///示例//但不是/ dzkoadokzd /// zdkoazaz
现在我想在彼此之后禁止多个“/”。 我试过这个但它不起作用(我是正则表达式的新手):
/^[^/]([a-z0-9-]+[/]{1})+[^/]$$/
答案 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\/]/;