簡體   English   中英

JS正則表達式用於密碼驗證匹配

[英]Js regex for password validation match

我將以下正則表達式與abide Foundation結合使用以驗證密碼:

<form id="setPassword" action="{{ url('changePasswordWithoutToken') }}" method="POST" class="account setPassword" data-abide="ajax" novalidate="novalidate">
{{ csrfToken() }}
    <input type="hidden" name="token" value="{{ data.token }}"/>
    <div class="row">
        <div class="large-12 columns"><p>{{ 'PLEASECHOOSEAPASSWORD'|trans }}</p></div>
        <div class="large-12 columns">
            <label class="password" for="setPasswordField">
                <input type="password" id="setPasswordField" name="setPasswordField"  pattern="passwordAdditional" required placeholder="{{ 'ACCOUNTLOGINLABELPASSWORD'|trans }}" />
                <small class="error">{{ 'PASSWORDSHOULDCONTAIN'|trans }}</small>
            </label>
        </div>
    </div>
    <div class="row">
        <div class="large-12 columns">
            <label class="confirmPassword" for="confirmSetPassword">
                <input type="password" id="confirmSetPassword"  name="confirmSetPassword" data-equalto="setPasswordField" required placeholder="{{ 'CONFIRMPASSWORD'|trans }}" />
                <small class="error">{{ 'ACCOUNTREGISTRATIONERRORDIFFERENTPASSWORDS'|trans }}</small>
            </label>
        </div>
    </div>
    <div class="row">
        <div class="small-12 medium-5 large-4 columns">
            <button type="submit" class="button" id="setPasswordBtn">{{ 'SAVECHANGES'|trans }}</button>
        </div>
    </div>

JS:

模式:{passwordAdditional:/ ^(?=。 [az])(?=。 [AZ])(?=。 \\ d)(?=。 [_ \\ W \\ S])。{8,} /}

當我輸入不帶符號的新密碼時,似乎看不到該符號,驗證消息消失了。 不應該,因為我沒有在新密碼中插入任何符號。 我的正則表達式錯了嗎?

您的正則表達式有誤,您犯了2個錯誤:

(?=.[az])正在尋找一個字符,后跟一個小寫字母,但是您的目的是在字符串中找到一個小寫字母,因此. 應修改* (0次或多次)

(?=.[_\\W\\S])正在尋找一個字符,后跟下划線,非單詞或非空格,從字面上看,這就是所有字符。 這似乎是您檢查符號的方法,但它始終會匹配(如果至少有2個字符)。 我會使用否定來實現,例如(?=.*[^a-zA-Z0-9\\s])

這導致以下正則表達式

/^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[^a-zA-Z0-9\s]).{8,}$/

您可以查看https://regex101.com/r/dG9xL8/1以獲取演示。

希望這可以幫助。

/^(?=.*?[A-Z])(?=.*?[a-z])(?=.*?[0-9])(?=.*?[#?!@$%^&*-]).{8,}$/

它至少需要1個大寫和小寫字母,一個數字和一個符號(在#?!@$%^&*- )。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM