搜尋

首頁  >  問答  >  主體

java正则表达式问题?

用正则表达式构造匹配:

  1. 密码必须由数字、字符、特殊字符三种同时存在组成;

  2. 密码长度不能少于8个字符;

PHPzPHPz2893 天前393

全部回覆(5)我來回復

  • 高洛峰

    高洛峰2017-04-18 09:09:48

    雷雷

    回覆
    0
  • 巴扎黑

    巴扎黑2017-04-18 09:09:48

    驗證了下, @菩提旭光 的答案是不正確的, 例如hello123就能匹配, 但并不满足要求. 而且 8個空格也能匹配, 但並不滿足要求, 你也沒辦法把所有特殊符號都加進去.

    雖然可以加入(?=[a-zA-Z0-9_#@]+)來保證密碼不會包含除指定外的特殊符號, 但仍然無法保證它必須有三種符號.

    不全是數字/字母/特殊符號, 結果是只要包含2種以上符號即可.

    事實上, 這不是一個正規的問題, 參考相似問題

    回覆
    0
  • 伊谢尔伦

    伊谢尔伦2017-04-18 09:09:48

    把6種情況都列一遍

    回覆
    0
  • 伊谢尔伦

    伊谢尔伦2017-04-18 09:09:48

    @菩提旭光 的思路是對的,把negative lookahead換成positive lookahead,再稍微調整一下就行了。
    (?=.d.)(?=.[a-zA-Z].)(?=.[_#@].).{8,}

    回覆
    0
  • 迷茫

    迷茫2017-04-18 09:09:48

    我覺得這個問題不應該用正規表達式來解決,每種工具都有非常適合使用的場景,我覺得在你這個場景裡面並不適合用正則表達式去解決,用簡單的if語句去判斷,實作簡單,而且可讀性非常好,為什麼一定要用正規表示式呢! ?

    回覆
    0
  • 取消回覆