正则表达式
如果原来没有使用过正则表达式,那么可能对这个术语和概念会不太熟悉。不过,它们并不是您想象的那么新奇。请回想一下在硬盘上是如何查找文件的。您肯定会使用 ? 和 * 字符来帮助查找您正寻找的文件。? 字符匹配文件名中的单个字符,而 * 则匹配一个或多个字符。一个如 'data?.dat' 的模式可以找到下述文件:data1.datdata2.datdatax.datdataN.dat如果使用 * 字符代替 ? 字符,则将扩大找到的文件数量。'data*.dat' 可以匹配下述所有文件名:data.datdata1.datdata2.datdata12.datdatax.datdataXYZ.dat尽管这种搜索文件的方法肯定很有用,但也十分有限。? 和 * 通配符的有限能力可以使你对正则表达式能做什么有一个概念,不过正则表达式的功能更强大,也更灵活。

解决方案 »

  1.   

        现在才明白正则表达式是regular expression,看来英文比中文要好理解多了,就是检查表达式符
    不符合规定!!正则表达式有一个功能十分强大而又十分复杂的对象RegExp,在JavaScript1.2 版本以
    上提供。
        下面我们看看有关正则表达式的介绍:
        正则表达式对象用来规范一个规范的表达式(也就是表达式符不符合特定的要求,比如是不是Email
    地址格式等),它具有用来检查给出的字符串是否符合规则的属性和方法。
        除此之外,你用RegExp构造器建立的个别正则表达式对象的属性,就已经预先定义好了正则表达式
    对象的静态属性,你可以随时使用它们。
      

  2.   

    javascript例子:Use regular expressions to validate/format a string
    This is an impressive collection (that I found somehere on the Net) of various functions to validate or format string in Javascript. The code is very compact. /*******************************************************************************
    FILE: RegExpValidate.jsDESCRIPTION: This file contains a library of validation functions
      using javascript regular expressions.  Library also contains functions that re-
      format fields for display or for storage.
        VALIDATION FUNCTIONS:
      
      validateEmail - checks format of email address
        validateUSPhone - checks format of US phone number
        validateNumeric - checks for valid numeric value
      validateInteger - checks for valid integer value
        validateNotEmpty - checks for blank form field
      validateUSZip - checks for valid US zip code
      validateUSDate - checks for valid date in US format
      validateValue - checks a string against supplied pattern
      
      FORMAT FUNCTIONS:
      
      rightTrim - removes trailing spaces from a string
      leftTrim - removes leading spaces from a string
      trimAll - removes leading and trailing spaces from a string
      removeCurrency - removes currency formatting characters (), $ 
      addCurrency - inserts currency formatting characters
      removeCommas - removes comma separators from a number
      addCommas - adds comma separators to a number
      removeCharacters - removes characters from a string that match passed pattern
      
      
    AUTHOR: Karen GaydaDATE: 03/24/2000
    *******************************************************************************/function validateEmail( strValue) {
    /************************************************
    DESCRIPTION: Validates that a string contains a 
      valid email pattern. 
      
     PARAMETERS:
       strValue - String to be tested for validity
       
    RETURNS:
       True if valid, otherwise false.
       
    REMARKS: Accounts for email with country appended
      does not validate that email contains valid URL
      type (.com, .gov, etc.) or valid country suffix.
    *************************************************/
    var objRegExp  = /(^[a-z]([a-z_\.]*)@([a-z_\.]*)([.][a-z]{3})$)|(^[a-z]([a-z_\.]*)@([a-z_\.]*)(\.[a-z]{3})(\.[a-z]{2})*$)/i;
     
      //check for valid email
      return objRegExp.test(strValue);
    }function validateUSPhone( strValue ) {
    /************************************************
    DESCRIPTION: Validates that a string contains valid
      US phone pattern. 
      Ex. (999) 999-9999 or (999)999-9999
      
    PARAMETERS:
       strValue - String to be tested for validity
       
    RETURNS:
       True if valid, otherwise false.
    *************************************************/
      var objRegExp  = /^\([1-9]\d{2}\)\s?\d{3}\-\d{4}$/;
     
      //check for valid us phone with or without space between 
      //area code
      return objRegExp.test(strValue); 
    }function  validateNumeric( strValue ) {
    /******************************************************************************
    DESCRIPTION: Validates that a string contains only valid numbers.PARAMETERS:
       strValue - String to be tested for validity
       
    RETURNS:
       True if valid, otherwise false.
    ******************************************************************************/
      var objRegExp  =  /(^-?\d\d*\.\d*$)|(^-?\d\d*$)|(^-?\.\d\d*$)/; 
     
      //check for numeric characters 
      return objRegExp.test(strValue);
    }function validateInteger( strValue ) {
    /************************************************
    DESCRIPTION: Validates that a string contains only 
        valid integer number.
        
    PARAMETERS:
       strValue - String to be tested for validity
       
    RETURNS:
       True if valid, otherwise false.
    ******************************************************************************/
      var objRegExp  = /(^-?\d\d*$)/;
     
      //check for integer characters
      return objRegExp.test(strValue);
    }function validateNotEmpty( strValue ) {
    /************************************************
    DESCRIPTION: Validates that a string is not all
      blank (whitespace) characters.
        
    PARAMETERS:
       strValue - String to be tested for validity
       
    RETURNS:
       True if valid, otherwise false.
    *************************************************/
       var strTemp = strValue;
       strTemp = trimAll(strTemp);
       if(strTemp.length > 0){
         return true;
       }  
       return false;
    }function validateUSZip( strValue ) {
    /************************************************
    DESCRIPTION: Validates that a string a United
      States zip code in 5 digit format or zip+4
      format. 99999 or 99999-9999
        
    PARAMETERS:
       strValue - String to be tested for validity
       
    RETURNS:
       True if valid, otherwise false.*************************************************/
    var objRegExp  = /(^\d{5}$)|(^\d{5}-\d{4}$)/;
     
      //check for valid US Zipcode
      return objRegExp.test(strValue);
    }function validateUSDate( strValue ) {
    /************************************************
    DESCRIPTION: Validates that a string contains only 
        valid dates with 2 digit month, 2 digit day, 
        4 digit year. Date separator can be ., -, or /.
        Uses combination of regular expressions and 
        string parsing to validate date.
        Ex. mm/dd/yyyy or mm-dd-yyyy or mm.dd.yyyy
        
    PARAMETERS:
       strValue - String to be tested for validity
       
    RETURNS:
       True if valid, otherwise false.
       
    REMARKS:
       Avoids some of the limitations of the Date.parse()
       method such as the date separator character.
    *************************************************/
      var objRegExp = /^\d{1,2}(\-|\/|\.)\d{1,2}\1\d{4}$/
     
      //check to see if in correct format
      if(!objRegExp.test(strValue))
        return false; //doesn't match pattern, bad date
      else{
        var strSeparator = strValue.substring(2,3) //find date separator
        var arrayDate = strValue.split(strSeparator); //split date into month, day, year
        //create a lookup for months not equal to Feb.
        var arrayLookup = { '01' : 31,'03' : 31, '04' : 30,'05' : 31,'06' : 30,'07' : 31,
                            '08' : 31,'09' : 30,'10' : 31,'11' : 30,'12' : 31}
        var intDay = parseInt(arrayDate[1]);     //check if month value and day value agree
        if(arrayLookup[arrayDate[0]] != null) {
          if(intDay <= arrayLookup[arrayDate[0]] && intDay != 0)
            return true; //found in lookup table, good date
        }
        
        //check for February
        var intYear = parseInt(arrayDate[2]);
        var intMonth = parseInt(arrayDate[0]);
        if( ((intYear % 4 == 0 && intDay <= 29) || (intYear % 4 != 0 && intDay <=28)) && intDay !=0)
          return true; //Feb. had valid number of days
      }
      return false; //any other values, bad date
    }function validateValue( strValue, strMatchPattern ) {
    /************************************************
    DESCRIPTION: Validates that a string a matches
      a valid regular expression value.
        
    PARAMETERS:
       strValue - String to be tested for validity
       strMatchPattern - String containing a valid
          regular expression match pattern.
          
    RETURNS:
       True if valid, otherwise false.
    *************************************************/
    var objRegExp = new RegExp( strMatchPattern);
     
     //check if string matches pattern
     return objRegExp.test(strValue);
    }
    function rightTrim( strValue ) {
    /************************************************
    DESCRIPTION: Trims trailing whitespace chars.
        
    PARAMETERS:
       strValue - String to be trimmed.  
          
    RETURNS:
       Source string with right whitespaces removed.
    *************************************************/
    var objRegExp = /^([\w\W]*)(\b\s*)$/;
     
          if(objRegExp.test(strValue)) {
           //remove trailing a whitespace characters
           strValue = strValue.replace(objRegExp, '$1');
        }
      return strValue;
    }function leftTrim( strValue ) {
    /************************************************
    DESCRIPTION: Trims leading whitespace chars.
        
    PARAMETERS:
       strValue - String to be trimmed
       
    RETURNS:
       Source string with left whitespaces removed.
    *************************************************/
    var objRegExp = /^(\s*)(\b[\w\W]*)$/;
     
          if(objRegExp.test(strValue)) {
           //remove leading a whitespace characters
           strValue = strValue.replace(objRegExp, '$2');
        }
      return strValue;
    }function trimAll( strValue ) {
    /************************************************
    DESCRIPTION: Removes leading and trailing spaces.PARAMETERS: Source string from which spaces will
      be removed;RETURNS: Source string with whitespaces removed.
    *************************************************/ 
     var objRegExp = /^(\s*)$/;    //check for all spaces
        if(objRegExp.test(strValue)) {
           strValue = strValue.replace(objRegExp, '');
           if( strValue.length == 0)
              return strValue;
        }
        
       //check for leading & trailing spaces
       objRegExp = /^(\s*)([\W\w]*)(\b\s*$)/;
       if(objRegExp.test(strValue)) {
           //remove leading and trailing whitespace characters
           strValue = strValue.replace(objRegExp, '$2');
        }
      return strValue;
    }function removeCurrency( strValue ) {
    /************************************************
    DESCRIPTION: Removes currency formatting from 
      source string.
      
    PARAMETERS: 
      strValue - Source string from which currency formatting
         will be removed;RETURNS: Source string with commas removed.
    *************************************************/
      var objRegExp = /\(/;
      var strMinus = '';
     
      //check if negative
      if(objRegExp.test(strValue)){
        strMinus = '-';
      }
      
      objRegExp = /\)|\(|[,]/g;
      strValue = strValue.replace(objRegExp,'');
      if(strValue.indexOf('$') >= 0){
        strValue = strValue.substring(1, strValue.length);
      }
      return strMinus + strValue;
    }function addCurrency( strValue ) {
    /************************************************
    DESCRIPTION: Formats a number as currency.PARAMETERS: 
      strValue - Source string to be formattedREMARKS: Assumes number passed is a valid 
      numeric value in the rounded to 2 decimal 
      places.  If not, returns original value.
    *************************************************/
      var objRegExp = /-?[0-9]+\.[0-9]{2}$/;
       
        if( objRegExp.test(strValue)) {
          objRegExp.compile('^-');
          strValue = addCommas(strValue);
          if (objRegExp.test(strValue)){
            strValue = '(' + strValue.replace(objRegExp,'') + ')';
          }
          return '$' + strValue;
        }
        else
          return strValue;
    }function removeCommas( strValue ) {
    /************************************************
    DESCRIPTION: Removes commas from source string.PARAMETERS: 
      strValue - Source string from which commas will 
        be removed;RETURNS: Source string with commas removed.
    *************************************************/
      var objRegExp = /,/g; //search for commas globally
     
      //replace all matches with empty strings
      return strValue.replace(objRegExp,'');
    }function addCommas( strValue ) {
    /************************************************
    DESCRIPTION: Inserts commas into numeric string.PARAMETERS: 
      strValue - source string containing commas.
      
    RETURNS: String modified with comma grouping if
      source was all numeric, otherwise source is 
      returned.
      
    REMARKS: Used with integers or numbers with
      2 or less decimal places.
    *************************************************/
      var objRegExp  = new RegExp('(-?[0-9]+)([0-9]{3})');     //check for match to search criteria
        while(objRegExp.test(strValue)) {
           //replace original string with first group match, 
           //a comma, then second group match
           strValue = strValue.replace(objRegExp, '$1,$2');
        }
      return strValue;
    }function removeCharacters( strValue, strMatchPattern ) {
    /************************************************
    DESCRIPTION: Removes characters from a source string
      based upon matches of the supplied pattern.PARAMETERS: 
      strValue - source string containing number.
      
    RETURNS: String modified with characters
      matching search pattern removed
      
    USAGE:  strNoSpaces = removeCharacters( ' sfdf  dfd', 
                                    '\s*')
    *************************************************/
     var objRegExp =  new RegExp( strMatchPattern, 'gi' );
     
     //replace passed pattern matches with blanks
      return strValue.replace(objRegExp,'');
    }