2014-10-08 138 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