2017-05-03 44 views
1

正則表達式:((?=.*\d)(?=.*[A-Z]))HTML模式簡化版,即使有正確的正則表達式工作

輸入字符串:qwer1Q

輸入字符串以上通過驗證,如果你在regex101

檢查然而,如果您將html正則表達式包含在html pattern屬性中,並嘗試再次驗證相同的字符串,但不得通過:

<form> 
    <div> 
    <input type="text" placeholder="Password" 
     pattern="((?=.*\d)(?=.*[A-Z]))"> 
    </div> 
    <div> 
    <button>Submit</button> 
    </div> 
</form> 

回答

1

您需要確保該模式匹配整個字符串,因爲默認情況下HTML5 pattern正則表達式被錨定。

<form> 
 
    <div> 
 
    <input type="text" placeholder="Password" 
 
     pattern="(?=.*\d)(?=.*[A-Z]).*"> 
 
    </div> 
 
    <div> 
 
    <button>Submit</button> 
 
    </div> 
 
</form>

(?=.*\d)(?=.*[A-Z]).*圖案將變成^(?:(?=.*\d)(?=.*[A-Z]).*)$和它將匹配:

  • ^ - 串
  • 的開始
  • (?: - 非捕獲組的開始:
    • (?=.*\d) - 積極先行檢查,以確保至少有1位
    • (?=.*[A-Z]) - 積極先行檢查,以確保至少有1個大寫字母
    • .* - 任何0+字符,貪婪,達串
  • )的端部 - 串的端部 - 的非捕獲組
  • $結束。