2017-07-06 121 views
-1

我對正則表達式沒有經驗。我需要一個不允許重複特殊字符的正則表達式(+ - */&等) 該字符串可以包含數字,字母數字和特殊字符。正則表達式 - 如何防止重複的特殊字符?

這應該是有效的:ABC,DF

這應該是無效的:ABC-,DF

,我將非常感激,如果你能幫幫我!感謝您的提前。

+1

還有什麼你認爲一個特殊字符? '-'和','對我來說同樣是'特殊的' – Brandon

回答

1

兩個方案至今匹配字符串,它是不允許的。

但tilte是如何防止...,所以我認爲正則表達式 應該匹配允許字符串。這意味着,正則表達式應該:

  • 比賽整個字符串,如果它不包含2個 連續的特殊字符,
  • 不能匹配。

你可以做到這一點放在一起以下幾個部分:

  • ^ - 字符串錨開始,
  • (?!.*[...]{2}) - 連續2個特殊 字符負先行(這裏標記爲... ),在任何地方,
  • 匹配整個(非空)字符串的正則表達式,
  • $ - 字符串定位結束。

所以整個正則表達式應該是:

^(?!.*[[email protected]#$%^&*()\-_+={}[\]|\\;:'",<.>\/?]{2}).+$ 

注意,一個字符類中(間[])逃逸以下字符反斜槓 應該-前放置(如果 中間的順序),結束方括號, 反斜槓本身和/(正則表達式終止符)。

或者,如果你想在正則表達式適用於單個單詞(不是整個 字符串),那麼正則表達式應該是:

\b(?!\S*[[email protected]#$%^&*()\-_+={}[\]|\\;:'",<.>\/?]{2})\S+ 
+0

它工作的很棒,你救了我的一天。真的很感激,謝謝! – asyaben

0

使用以下正則表達式來匹配無效字符串。提出

[^A-Za-z0-9]{2,}