2014-10-08 182 views
1

我之前發佈了此查詢並獲得了包含的響應,但似乎無法使此查詢匹配 - 我正在使用Firefox。我究竟在想什麼? (應該是複製/可存儲的)Javascript正則表達式不匹配 - 包含完整代碼

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
    <html xmlns="http://www.w3.org/1999/xhtml"> 
    <head> 
    <script type="text/javascript" src="https://code.jquery.com/jquery-latest.min.js"></script> 
    </head> 
    <body> 
      <script type="text/javascript"> 
        $('#inp1').on('keyup',function(){ 
          $('#out1').val($(this).val().match(/(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*([^\w]|_)).{8,}/)); 
        }) 
      </script> 
      Inp <input id="inp1" type="text" value="fDe^je872Fhdj"><br> 
      Out <input id="out1" />   
    </body> 
    </html> 

回答

2

match() returns Array。使用索引來獲取第一個和唯一的值,這是整個匹配。

$(this).val().match(/(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*([^\w]|_)).{8,}/)[0]); 
              // index  <-----------------^ 

並使用內部DOM準備好你的代碼,因爲元素還不存在這一點。

$(document).ready(function() { 
    $('#inp1').on('keyup', function() { 
     $('#out1').val($(this).val().match(/(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*([^\w]|_)).{8,}/)[0]); 
    }) 
}); 
+0

賓果 - 我在別處的函數運行這段代碼 - 因此,爲什麼不需要文檔準備好,但就是好,我看見了,就jsregex但從來沒有想過這是一個數組。恭喜20k。 – Ukuser32 2014-10-08 16:14:50

+0

@ Ukuser32我今天回答你兩次了! :)順便說一句,它還沒有20k它的1996年,這是四捨五入的那樣..; p – 2014-10-08 16:16:33

+0

不,它是19987其實:)爲好的答案+1 – anubhava 2014-10-08 16:51:06