我倒!很简单呀,有什么可探讨的?

解决方案 »

  1.   

    送大家几个使用正则表达式校验字符串的例子,这是一个完整的页面:<html>
    <head>
    <title>凤君出品,必属精品!</title>
    <style>TD {FONT-SIZE: 12px; COLOR: #333333;}</style><SCRIPT language="JavaScript">
    <!--
    /*
     *Author:赵凤君
     *Function:关于字符串的表单校验函数
     *Create:September 14, 2002
     */
    /*这函数的作用是当页面装在完毕后默认把焦点放在第一个表单域,需要结合body的onload()事件*/
    function focusInFirst(){
      document.forms[0].elements[0].focus();
      }
    /*判断用户输入是否为空,也即无输入的情况。*/
    function isEmpty(ui) {
      return (ui==null||ui=="");}
    /*判断是否用户输入全为数字*/
    function isNumber(ui) {
      var notValid=/\D{1,}/;
      return (!notValid.test(ui));}
    /*判断用户输入是否全为字母*/
    function isLetter(ui) {
      var valid=/^[a-zA-Z]*$/;
      return (valid.test(ui));}
    /*判断用户输入的字符串必须为数字、字母或者下划线(_)*/
    function isNLU(ui) {
      var valid=/^\w*$/;
      return (valid.test(ui));}
    /*这个方法跟上面的isNLU()实现相同的功能,效率也很高,但由于循环的原因,比上面的方法还是差很多。*/
    /*本例子后面的校验中并没有调用该方法,只是方便您参考而已。*/
    function isNumLetUnd(ui){
    var valid="0123456789abcdefghijklmnopqrstuvwxwzABCDEFGHIJKLMNOPQRSTUVWXYZ_";
    for(var i=0;i<ui.length;i++){
     if(valid.indexOf(ui.charAt(i))==-1)
       return false;}
       return true;}
    /*判断用户输入的字符串必须为数字、字母或者下划线(_),且最少同时包含数字和字母,下划线可输入也可不输入*/
    function isIncNL(ui) {
      var valid=/^\w{2,}$/;
      var validNum=/\d+/;
      var validLet=/[a-zA-Z]+/;
      return (isEmpty(ui)||(valid.test(ui)&&validNum.test(ui)&&validLet.test(ui)));}
    /*判断用户输入的字符串必须为数字、字母或者下划线(_),且最少同时包含数字、字母、下划线*/
    function isIncNLU(ui) {
      var valid=/^\w{3,}$/;
      var validNum=/\d+/;
      var validLet=/[a-zA-Z]+/;
      var validSym=/\_+/;
      return (isEmpty(ui)||(valid.test(ui)&&validNum.test(ui)&&validLet.test(ui)&&validSym.test(ui)));}
    /*有很多符号是不可以允许用户输入的,否则你在JSP中request.getParameter()后会导致程序错误,尤其是单引号!
     *本函数禁用了可能引起错误的所有字符!*/
    function isIncSym(ui) {
      var valid=/[\'\"\,\<\>\+\-\*\/\%\^\=\\\!\&\|\(\)\[\]\{\}\:\;\~\`\#\$]+/;
      return (valid.test(ui));}
    /*有的时候我们要求用户必须输入或者禁止输入指定的字符或者字符串,用下面的函数就够了*/
    function isInc(ui,udSub) {
      return (ui.indexOf(udSub)!=-1);}
    /*判断用户输入字符串的长度是否在指定范围内。*/
    /*需要注意的是,这只是一个简单的判断,处理双字节会有问题,如果你不知如何判断含有双字节串的长度,请你告诉我。*/
    function lenCheck(ui,minl,maxl) {
      return (ui.length>=minl&&ui.length<=maxl);}function formCheck(){
    if(!isNumber(document.forms[0].only_num.value)){
      alert("该域只允许输入数字!");
      document.forms[0].only_num.focus();
      return false;}
    if(!isLetter(document.forms[0].only_let.value)){
      alert("该域只允许输入字母!");
      document.forms[0].only_let.focus();
      return false;}
    if(!isNLU(document.forms[0].in_nlu.value)){
      alert("该域只允许输入字母、数字或者下划线!");
      document.forms[0].in_nlu.focus();
      return false;}
    if(!isIncNL(document.forms[0].inc_nl.value)){
      alert("该域只允许输入字母、数字或下划线,至少包含字母和数字!");
      document.forms[0].inc_nl.focus();
      return false;}
    if(!isIncNLU(document.forms[0].inc_nlu.value)){
      alert("该域只允许且同时包含输入字母、数字和下划线!");
      document.forms[0].inc_nlu.focus();
      return false;}
    if(isIncSym(document.forms[0].no_inc_sym.value)){
      alert("该域包含了系统禁用的字符!");
      document.forms[0].no_inc_sym.focus();
      return false;}
    if(isInc(document.forms[0].no_inc_this.value,"roc")){
      alert("该域包含了用户指定禁用的字符!");
      document.forms[0].no_inc_this.focus();
      return false;}
    if(!isEmpty(document.forms[0].inc_this.value)&&!isInc(document.forms[0].inc_this.value,"zhao")){
      alert("该域没有包含用户指定的必须包含的字符!");
      document.forms[0].inc_this.focus();
      return false;}
    if(!isNLU(document.forms[0].len.value)){
      alert("该域只允许输入字母、数字或者下划线!");
      document.forms[0].len.focus();
      return false;}
    if(!lenCheck(document.forms[0].len.value,3,6)){
      alert("该域要求输入3到6个字符!");
      document.forms[0].len.focus();
      return false;}
    alert("恭喜恭喜!表单校验全部通过!");
    /*下面一段是我写着玩的,如果你觉得烦,可以注释掉*/
    /*废话从这里开始...*/
    var feedback="课后作业:\n\n\r本例程要实现的功能有BUG吗?\n\r您还有其他表单校验问题吗?\n\r实现本例中的功能,您有或者见过更为简洁高效的方法吗?\n\r如有上述问题,万望写信告诉我!\n\n\r简洁高效,精益求精,是我一贯的追求!\n\n\r赵凤君 [email protected]";
    if(confirm(feedback)){
      alert("真的吗?那你可要写信告诉我哦!");
      location="mailto:[email protected]?subject=反馈意见(关于你的表单校验脚本)";}
      else
        alert("\n\r哼,我就知道你会点取消!\n\r你干嘛不点一下确定呢?或许会有奇遇发生哦!\n\n\r感谢使用!");
    /*...废话到这里结束!*/
    }
    //-->
    </SCRIPT></head><body bgcolor="#FFFFFF" onLoad="focusInFirst()">
    <center>
      <font color="#FF6600">表单校验测试页面</font> 
      <hr width="60%" color="#000000" size="1" noshade>
      <font style="FONT-SIZE: 12px; COLOR:red;">注意:本例除最后一个输入框外,前面的表单域是没有校验长度的,但当你输入数据的时候将激发校验。</font> 
      <form name="testForm">
        <table width="600" border="1" cellspacing="2" cellpadding="0">
          <tr> 
            <td colspan="2">&nbsp;</td>
          </tr>
          <tr> 
            <td width="261">只能输入数字:</td>
            <td width="213"> 
              <input type="text" name="only_num">
            </td>
          </tr>
          <tr> 
            <td width="261">只能输入字母:</td>
            <td width="213"> 
              <input type="text" name="only_let">
            </td>
          </tr>
          <tr> 
            <td width="261">只能输入字母、数字或下划线:</td>
            <td width="213"> 
              <input type="text" name="in_nlu">
            </td>
          </tr>
          <tr> 
            <td width="261">只能输入字母、数字或下划线,且必须同时包含字母和数字:</td>
            <td width="213"> 
              <input type="text" name="inc_nl">
            </td>
          </tr>
          <tr> 
            <td width="261">只能输入字母、数字或下划线,且必须同时包含字母、数字和下划线:</td>
            <td width="213"> 
              <input type="text" name="inc_nlu">
            </td>
          </tr>
          <tr> 
            <td colspan="2">&nbsp; </td>
          </tr>
          <tr> 
            <td width="261">禁止包含预指定的字符('&quot;,&lt;&gt;+-*/%^=\!&amp;|()[]{}:;~`#$):</td>
            <td width="213"> 
              <input type="text" name="no_inc_sym">
            </td>
          </tr>
          <tr> 
            <td width="261">禁止包含用户指定的字符串(本例中为<font color="#FF0000">roc</font>):</td>
            <td width="213"> 
              <input type="text" name="no_inc_this">
            </td>
          </tr>
          <tr> 
            <td width="261">必须包含用户指定的字符串(本例中为<font color="#FF0000">zhao</font>):</td>
            <td width="213"> 
              <input type="text" name="inc_this">
            </td>
          </tr>
      <tr> 
            <td width="261">只能输入数字、字母或者下划线,且要求长度在3到6之间:</td>
            <td width="213"> 
              <input type="text" name="len">
            </td>
          </tr>
          <tr> 
            <td width="261">&nbsp;</td>
            <td width="213">&nbsp;</td>
          </tr>
          <tr> 
            <td width="261">&nbsp;</td>
            <td width="213"> 
              <input type="button" name="test" value="测试" onClick="return formCheck();">
            </td>
          </tr>
        </table>
      </form>
    </center>
    </body>
    </html>