繁体   English   中英

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

[英]Disallow “//” in a regular expression (javascript)

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

字符串的开头和结尾也必须没有/(此工作!):

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

这允许例如example /// example //但NOT / dzkoadokzd //// zdkoazaz

现在,我要互相禁止多个“ /”。 我已经尝试过了,但是没有用(我是正则表达式的新手):

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

/是正则表达式中的元字符。 您需要使用反斜杠( \\/ )对其进行转义\\/

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

不知道这是否是必需条件,但是jperovic的正则表达式通过使用[^ /]可以接受任何字符,而不是斜杠/(因此它还会传递类似“ @ abcd / efgh / ijkl /# ”的字符串(注意@和#),但是在正则表达式的其他部分,我们尝试将字符限制为[a-z0-9-]。如果我们想限制整个字符串的字符范围,请检查以下正则表达式。

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

顺便说一句,如果您只想在开始或结束处测试斜线,或者在其他位置进行双倍斜线测试:

function badSlash(s) {

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

  return re.test(s);
}

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM