1  <HTML>
  2  
  3  <HEAD>
  4  
  5    <TITLE>JavaScript Example:  RegExp object</TITLE>
  6  
  7    <SCRIPT LANGUAGE="JavaScript">
  8  
  9    function checkInput() {
 10      var valid = true;
 11      // Check SSN:
 12      var ssn = document.myForm.ssn.value;
 13      if ( !isSSN( ssn ) ) {
 14        window.alert( "invalid SSN:\n" + ssn );
 15        valid = false;
 16      }
 17      // Check Phone:
 18      var phone = document.myForm.phone.value;
 19      if ( !isPhone( phone ) ) {
 20        window.alert( "invalid phone number:\n" + phone );
 21        valid = false;
 22      }
 23      return valid;
 24    }
 25    
 26    function isSSN( str ) {
 27      return true;  // dummy method
 28    }
 29    
 30    function isPhone( str ) {
 31      return true;  // dummy method
 32    }
 33    
 34    </SCRIPT>
 35  
 36    <SCRIPT LANGUAGE="JavaScript1.2">
 37  
 38    // A simple pattern:
 39    function isSSN( str ) {
 40      // matches 999999999 or 999-99-9999
 41      var regexp = /^(\d{9}|\d{3}-\d{2}-\d{4})$/;
 42      return regexp.test( str );
 43    }
 44    
 45    // Another simple pattern:
 46    function isPhone( str ) {
 47      // matches 9999999999, 999-999-9999, or (999) 999-9999
 48      var regexp = /^(\d{10}|\d{3}-\d{3}-\d{4}|\(\d{3}\) \d{3}-\d{4})$/;
 49      return regexp.test( str );
 50    }
 51    
 52    // A more sophisticated pattern:
 53    function isPhone( str ) {
 54      // matches (999)-999-9999, (999) 999-9999, (999)999-999, etc.
 55      var regexp = /^((\((\d{3})\)|(\d{3}))[- ]?)?(\d{3})[- ]?(\d{4})$/;
 56      // exec() returns an array:
 57      if ( regexp.exec( str ) ) {
 58        // one of $3 or $4 will be null:
 59        window.document.myForm.phone.value =
 60          RegExp.$3 + RegExp.$4 + RegExp.$5 + RegExp.$6;
 61        return true;
 62      }
 63      return false;
 64    }
 65    
 66    // Exercise:  Rewrite isSSN().  
 67    
 68    </SCRIPT>
 69  
 70  </HEAD>
 71  
 72  <BODY BGCOLOR="#FFFFFF">
 73  
 74  <FORM NAME=myForm onSubmit="return checkInput()"
 75        ACTION="http://osprey7.npac.syr.edu:3768/users-cgi/trscavo/prod/post-query">
 76    <TABLE>
 77      <TR>
 78        <TD ALIGN=RIGHT>Name:</TD>
 79        <TD><INPUT TYPE=TEXT NAME=name></TD>
 80      </TR>
 81      <TR>
 82        <TD ALIGN=RIGHT>SSN:</TD>
 83        <TD><INPUT TYPE=TEXT NAME=ssn></TD>
 84      </TR>
 85      <TR>
 86        <TD ALIGN=RIGHT>Phone:</TD>
 87        <TD><INPUT TYPE=TEXT NAME=phone></TD>
 88      </TR>
 89      <TR>
 90        <TD>&nbsp;</TD>
 91        <TD ALIGN=CENTER><INPUT TYPE=SUBMIT 
 92            VALUE=Submit>&nbsp;<INPUT TYPE=RESET VALUE=Clear></TD>
 93      </TR>
 94    </TABLE>
 95  </FORM>
 96  
 97  </BODY>
 98  
 99  </HTML>