2012-03-23 79 views
0

我想禁止正則表達式中的雙正斜槓(//)(因此允許單個/),但我的解決方案不起作用。在正則表達式中禁止「//」(javascript)

此外,還必須是NO /開頭和一個字符串的結束(這個工作!):

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

這允許例如例如///例如//但是NOT/dzkoadokzd /// zdkoazaz

現在我想禁止多個「/」在對方之後。 我已經試過,但它不工作(我是新來的正則表達式):

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

它被稱爲正斜槓或斜線。反斜槓是\ – kirilloid 2012-03-23 09:51:40

回答

3

/是在正則表達式元字符。你需要用反斜槓逃脫它(\/

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

謝謝你很高興知道! 但是這個正則表達式不起作用(我的也是這樣):它使文本無效(a-z)。你知道錯誤在哪裏嗎?謝謝 – benske 2012-03-23 09:06:35

+2

這個正則表達式不起作用,因爲它期望在最後一個「/」後面有一個字符。要修復它,請在「$」之前添加「+」。 – Rafael 2012-03-23 09:13:23

+0

奧克謝謝拉斐爾,現在工作! – benske 2012-03-23 09:16:06

3

不知道這是一個要求,但是從jperovic正則表達式,用[^ /]將接受任何字符,這不是一個斜線/(所以它還會傳遞字符串「@ abcd/efgh/ijkl /#」(請注意@和#),但在正則表達式的其他部分,我們試圖將字符限制爲[a-z0-9-]。如果我們想限制整個字符串的字符範圍,檢查下面的正則表達式。

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

完美,這確實是一個問題!謝謝! – benske 2012-03-23 09:31:53

1

順便說一句,如果你只是想在開始或結束或doubl以測試斜槓e其他地方:

function badSlash(s) { 

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

    return re.test(s); 
} 

您可以爲其他不需要的圖案添加另一個OR,例如:

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