2017-08-16 564 views
1

我有這個^[a-zA-Z0-9 @&$]*$,但在少數情況下不適用於我。正則表達式允許字母數字,空格,一些特殊字符

如果有人類型

  • 只由數字組成(例如1234567)的字符串
  • 的字符串開始以特殊字符(例如&123abc

需要被拒絕。請注意,特殊字符可以在中間和結尾。

+2

你能準確列出哪些條件需要被拒絕,爲什麼? –

+1

嘗試['^(!!\ d + $)(?:[a-zA-Z0-9] [a-zA-Z0-9 @&$] *)?$'](https://regex101.com/R/AScqhl/1)。 –

+0

謝謝,請將其作爲您的答案,以便我可以將此標記爲已接受的答案。 – Sharpeye500

回答

1

你似乎需要避免匹配的字符串,僅由數字,並確保該字符串以字母數字開始。我假設你也需要能夠匹配空字符串(原始正則表達式匹配空字符串)。

這就是爲什麼我建議

^(?!\d+$)(?:[a-zA-Z0-9][a-zA-Z0-9 @&$]*)?$ 

regex demo

詳細

  • ^ - 串
  • (?!\d+$)啓動 - 失敗的比賽,如果負前瞻一個字符串•數字只有
  • (?:[a-zA-Z0-9][a-zA-Z0-9 @&$]*)? - 的可選順序: - 一個數字或字母
  • [a-zA-Z0-9 @&$]* - 0+數字,字母,空格,@&$字符
    • [a-zA-Z0-9]$ - 字符串結尾。
  • +0

    如果我想排除一些幷包含一些特殊字符,我如何排除一些,爲包容,我從你的正則表達式中看到它。 – Sharpeye500

    +0

    @ Sharpeye500:對不起,你是什麼意思?如果你不想匹配一個字符,首先不要將它添加到字符類中。 –

    +0

    如果有「。」 (句點)之間的字符,目前正則表達式接受它。 例如,「Test.Work」,如果我需要拒絕「。」。 ,我如何排除正則表達式。 – Sharpeye500

    1

    你可以用下面的正則表達式

    ^(?!\d+$)\w+\S+ 
    

    檢查做演示here

    相關問題