2017-06-07 223 views
2

我需要使用,應滿足以下要求正則表達式來驗證輸入字符串:正則表達式的字母數字特殊字符

  • 如果所有的數字 - >錯誤
  • 如果所有特殊字符 - >錯誤
  • 如果只是數字+特殊字符 - >錯誤
  • 剩餘的所有應該被標記爲非錯誤。

我無法通過所有測試用例。

這裏是我的正則表達式:

\d*([a-zA-Z,\/().]*[a-zA-Z][\d,\/().]*)[a-zA-Z\d\s]*$ 

,特殊字符,我得到一個特定的列表,\/().讓他們在任何人能幫助我理解這一點。?

回答

0

您可以使用下面的正則表達式:

^(?:[\d,\/().]*[a-zA-Z][a-zA-Z\d,\/().]*)?$ 

regex demo

詳細

  • ^ - 字符串的開始
  • (?:[\d,\/().]*[a-zA-Z][a-zA-Z\d,\/().]*)? - 一個可選的序列(其讓字符串爲空):
    • [\d,\/().]* - 0+數字和特殊
    • [a-zA-Z] - 一個字母
    • [a-zA-Z\d,\/().]* - 0+字母,數字和特殊
  • $ - 字符串的結尾
+0

這是工作和感謝。我只是想了解並與我的正則表達式進行比較。在我的正則表達式中,所有特殊字符都與我傳遞的不相關。有什麼遺漏嗎? – Vamchi

+0

您錯過了'^'(這裏是一個嚴重的錯誤),並且您還允許使用'\ s'作爲空格。 –

+0

如果我們允許空白,那麼它會是「^(?:[\ d,\ /()。\ s] * [a-zA-Z] [a-zA-Z \ d,\ /()。\ s] * \ s *)?$「?例如:它應該允許(19 xxxx sjnfjfb) – Vamchi

0

去嚴格根據您的要求,以下方法可以做到:

[^\d,\\\/().] 

如果有任何「觸發」字符(非數字,非特殊)

如果你想整個字符串匹配相匹配,使用

^.*[^\d,\\\/().].*$ 
相關問題