笔记 javascript test()方法

东门玺
2023-12-01

定义和用法

test() 方法用于检测一个字符串是否匹配某个模式.

语法

RegExpObject.test(string)

参数描述
string必需。要检测的字符串。

返回值

如果字符串 string 中含有与 RegExpObject 匹配的文本,则返回 true,否则返回 false。

说明

调用 RegExp 对象 r 的 test() 方法,并为它传递字符串 s,与这个表示式是等价的:(r.exec(s) != null)。

 

例1:

[javascript] view plain copy
  1. <script type="text/javascript">  
  2. var reg1=//d/g;  
  3. var num1=1;  
  4. alert(reg1.test(num1));  
  5. alert(reg1.test(num1));  
  6.   
  7.   
  8. var reg2=//d/g;  
  9. var num2=12;  
  10. alert(reg2.test(num2));  
  11. alert(reg2.test(num2));  
  12. </script>  
  13.   
  14. 输出结果:true false true true  

 

注意:正则表达式中的test()、exec()方法对当前匹配位置有“记忆”。如果每次需要从头开始进行匹配需要用compile()重新编译正则表达式。

 

 

实例问题:

[javascript] view plain copy
  1. <script type="text/javascript">  
  2.    
  3.        
  4.      function show(){  
  5.   
  6.          var number=parseInt(window.prompt("",""));  
  7.          var reg=//d+/g;  
  8.          var f1=reg.test(number);  
  9.    
  10.          alert(f1);  
  11.      }  
  12.    
  13. </script>  
  14.  <body  >  
  15.     <input id="pid" οnclick="show()" />  
  16.  </body>   

ie6.0下输出结果:第1次输入1提示true,反复输入测试均为true。

firefox下输出结果:第1次输入1提示true,第2次输入的时候则为false。

 

这时候就需要每次对正则表达式重新编译或者重新改变匹配位置。

解决方案1

[javascript] view plain copy
  1. <script type="text/javascript">  
  2.    
  3.        
  4.      function show(){  
  5.   
  6.          var number=parseInt(window.prompt("",""));  
  7.          var reg=//d+/g;  
  8.          reg.compile(//d+/g);  
  9.          var f1=reg.test(number);  
  10.    
  11.          alert(f1);  
  12.      }  
  13.    
  14. </script>  
  15.  <body  >  
  16.     <input id="pid" οnclick="show()" />  
  17.  </body>   

ie/firefox下输出正常:反复输入测试均为true。

 

解决方案2:

通过修改lastIndex

[javascript] view plain copy
  1. <mce:script type="text/javascript">  
  2.    
  3.        
  4.      function show(){  
  5.   
  6.          var number=parseInt(window.prompt("",""));  
  7.          var reg=//d+/g;  
  8.          reg.lastIndex=0;  
  9.          var f1=reg.test(number);  
  10.    
  11.          alert(f1);  
  12.      }  
  13.    
  14. </script>  
  15.  <body  >  
  16.     <input id="pid" οnclick="show()" />  
  17.  </body>   

ie/firefox下输出正常:反复输入测试均为true。

 类似资料: