Wednesday, August 18, 2010

Javascript Validation

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.js
 
DESCRIPTION: This file contains a library of validation functions
  using javascript regular expressions.  Library also contains 
  functions that reformat 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 Gayda
 
DATE: 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) 
    var arrayDate = strValue.split(strSeparator); 
    //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],10); 
 
    //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 (bugfix 20050322)
    //bugfix  for parseInt kevin
    //bugfix  biss year  O.Jp Voutat
    var intMonth = parseInt(arrayDate[0],10);
    if (intMonth == 2) { 
       var intYear = parseInt(arrayDate[2]);
       if (intDay > 0 && intDay < 29) {
           return true;
       }
       else if (intDay == 29) {
         if ((intYear % 4 == 0) && (intYear % 100 != 0) || 
             (intYear % 400 == 0)) {
              // year div by 4 and ((not div by 100) or div by 400) ->ok
             return true;
         }   
       }
    }
  }  
  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 formatted
 
REMARKS: 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,'');
}

You can try it here.

If you want to know more about these MSDN pages :
RegExp Object
Regular Expression Syntax

Common expressions

Date
   /^\d{1,2}(\-|\/|\.)\d{1,2}\1\d{4}$/     mm/dd/yyyy
   
US zip code
  /(^\d{5}$)|(^\d{5}-\d{4}$)/             99999 or 99999-9999
  
Canadian postal code
  /^\D{1}\d{1}\D{1}\-?\d{1}\D{1}\d{1}$/   Z5Z-5Z5 orZ5Z5Z5
  
Time
  /^([1-9]|1[0-2]):[0-5]\d(:[0-5]\d(\.\d{1,3})?)?$/   HH:MM or HH:MM:SS or HH:MM:SS.mmm
  
IP Address(no check for alid values (0-255))
  /^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/ 999.999.999.999
  
Dollar Amount
  /^((\$\d*)|(\$\d*\.\d{2})|(\d*)|(\d*\.\d{2}))$/ 100, 100.00, $100 or $100.00
  
Social Security Number
  /^\d{3}\-?\d{2}\-?\d{4}$/   999-99-9999 or999999999
  
Canadian Social Insurance Number
  /^\d{9}$/ 999999999
 

http://rgagnon.com/jsdetails/js-0063.html

 

Tuesday, August 17, 2010

How to Replace All Occurrences of a String using Javascript Replace Function

Replace All Occurrences of a String using Javascript

In the second method where we used regular expression, if we identify the regular expression as a global regular expression we can easily replace all occurrences of a string within an other string value in a given text using Javascript.

How we can enable global regular expression is as simple as adding the "g" identifier following the regular expression.
Using "g" following the regular expression pattern, builtin javascript replace method will replace all matches and all occurences of the given text variable with the new string.

var string_variable;
string_variable = "Replace text using javascript replace function within a javascript string variable";
string_variable = string_variable.replace(/javascript/g, "js");
alert(string_variable);
As you can see in the sample javascript codes the implementation or the usage of the replace javascript function is so simple.

Thursday, August 12, 2010

SQL Server Date Time Format

In SQL Server used Cast or Convert function to Format DateTime value or column into a specific date format.Both function are used to convert datetime to varchar or string.

CAST function Syntax: CAST(expression as data_type)

Let's convert current date time to varchar

select cast(getdate() as varchar)

CONVERT function is used to change or convert the DateTime formats.By using convert function you can get only Date part or only Time part from the datetime.

CONVERT Function Syntax: CONVERT(data_type,expression,date Format style)

Let's take Sql Server DateTtime styles example:

Format

Query

USA mm/dd/yy

select convert(varchar, getdate(), 1)

ANSI yy.mm.dd

select convert(varchar, getdate(), 2)

British/French dd/mm/yy

select convert(varchar, getdate(), 3)

German dd.mm.yy

select convert(varchar, getdate(), 4)

Italian dd-mm-yy

select convert(varchar, getdate(), 5)

dd mon yy

select convert(varchar, getdate(), 6)

Mon dd, yy

select convert(varchar, getdate(), 7)

USA mm-dd-yy

select convert(varchar, getdate(), 10)

JAPAN yy/mm/dd

select convert(varchar, getdate(), 11)

ISO yymmdd

select convert(varchar, getdate(), 12)

mon dd yyyy hh:miAM (or PM)

select convert(varchar, getdate(), 100)

mm/dd/yyyy

select convert(varchar, getdate(), 101)

yyyy.mm.dd

select convert(varchar, getdate(), 102)

dd/mm/yyyy

select convert(varchar, getdate(), 103)

dd.mm.yyyy

select convert(varchar, getdate(), 104)

dd-mm-yyyy

select convert(varchar, getdate(), 105)

dd mon yyyy

select convert(varchar, getdate(), 106)

Mon dd, yyyy

select convert(varchar, getdate(), 107)

hh:mm:ss

select convert(varchar, getdate(), 108)

Default + milliseconds mon dd yyyy hh:mi:ss:mmmAM (or PM)

select convert(varchar, getdate(), 109)

mm-dd-yyyy

select convert(varchar, getdate(), 110)

yyyy/mm/dd

select convert(varchar, getdate(), 111)

yyyymmdd

select convert(varchar, getdate(), 112)

Europe default + milliseconds dd mon yyyy hh:mm:ss:mmm(24h)

select convert(varchar, getdate(), 113) or select convert(varchar, getdate(), 13)

hh:mi:ss:mmm(24h)

select convert(varchar, getdate(), 114)

 

Origin: http://www.technoreader.com/SQL-Server-Date-Time-Format.aspx

 

Monday, August 9, 2010

Setting a variable from dynamic sql


-- setting a variable from dynamic sql
Author Nigel Rivett

 

declare @i int

exec sp_executesql N'select @i = 999', N'@i int output', @i output

select @i

 

 

-- setting output parameter from dynamic stored procedure call

 

declare @OutputParameter varchar(100) ,

        @error int ,

        @SPName varchar(128) ,

        @SPCall nvarchar(128) ,

        @rc int

select @SPCall = 'exec ' + @SPName + ' @OutputParameter output'

exec @rc = sp_executesql @SPCall, N'@OutputParameter varchar(100) output', @OutputParameter output

select @Error = @@error

 

reference: http://www.nigelrivett.net/SQLTsql/sp_executeSQL.html