Sign  含义
^  指定检查开始处
$  指定检查结束处
[]  检查输入的值是否与方括号中的字符之一相匹配
\w  允许输入任何值
\d{}  "\d"指定输入的值是一个数字,{}表示已指定数据类型的出现次数
+  表明一个或多个元素将被添加到正在检查的表达式
匹配双字节字符(包括汉字在内):[^\x00-\xff]
匹配空行的正则表达式:\n[\s| ]*\r
匹配HTML标记的正则表达式:/<(.*)>.*<\/\1>|<(.*) \/>/
匹配首尾空格的正则表达式:(^\s*)|(\s*$)
匹配Email地址的正则表达式:\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*
匹配网址URL的正则表达式: http://([\w-]+\.)+[\w-]+(/[\w- ./?%&=]*)?

^\d+$  //匹配非负整数(正整数 + 0)
^[0-9]*[1-9][0-9]*$  //匹配正整数
^((-\d+)|(0+))$  //匹配非正整数(负整数 + 0)
^-[0-9]*[1-9][0-9]*$  //匹配负整数
^-?\d+$    //匹配整数
^\d+(\.\d+)?$  //匹配非负浮点数(正浮点数 + 0)
^(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$  //匹配正浮点数
^((-\d+(\.\d+)?)|(0+(\.0+)?))$  //匹配非正浮点数(负浮点数 + 0)
^(-(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*)))$  //匹配负浮点数
^(-?\d+)(\.\d+)?$  //匹配浮点数
^[A-Za-z]+$  //匹配由26个英文字母组成的字符串
^[A-Z]+$  //匹配由26个英文字母的大写组成的字符串
^[a-z]+$  //匹配由26个英文字母的小写组成的字符串
^[A-Za-z0-9]+$  //匹配由数字和26个英文字母组成的字符串
^\w+$  //匹配由数字、26个英文字母或者下划线组成的字符串
^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$    //匹配email地址
^[a-zA-z]+://匹配(\w+(-\w+)*)(\.(\w+(-\w+)*))*(\?\S*)?$  //匹配url

利用正则表达式限制网页表单里的文本框输入内容:
用正则表达式限制只能输入中文:onkeyup="value=value.replace(/[^\u4E00-\u9FA5]/g,'')" onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\u4E00-\u9FA5]/g,''))"
用正则表达式限制只能输入全角字符: onkeyup="value=value.replace(/[^\uFF00-\uFFFF]/g,'')" onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\uFF00-\uFFFF]/g,''))"
用正则表达式限制只能输入数字:onkeyup="value=value.replace(/[^\d]/g,'') "onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\d]/g,''))"
用正则表达式限制只能输入数字和英文:onkeyup="value=value.replace(/[\W]/g,'') "onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\d]/g,''))"
 
示例:
Internate URL:   http(s)?://([\w-]+\.)+[\w-]+(/[\w- ./?%&=]*)?
Internete 电子邮件地址:  \w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*
德国电话号码:   ((\(0\d\d\) |(\(0\d{3}\) )?\d )?\d\d \d\d \d\d|\(0\d{4}\) \d \d\d-\d\d?)
德国邮政编码:   (D-)?\d{5}
法国电话号码:   (0( \d|\d ))?\d\d \d\d(\d \d| \d\d )\d\d
法国电话编码:   \d{5}
美国电话号码:   ((\(\d{3}\) ?)|(\d{3}-))?\d{3}-\d{4}
美国社会保障号:  \d{3}-\d{2}-\d{4}
美国邮政编码:   \d{5}(-\d{4})?
日本电话号码:   (0\d{1,4}-|\(0\d{1,4}\) ?)?\d{1,4}-\d{4}
日本邮政编码:   \d{3}(-(\d{4}|\d{2}))?
×××电话号码: (\(\d{3}\)|\d{3}-)?\d{8}
×××省份证号码: \d{17}[\d|X]|\d{15}
×××邮政编码: \d{6}
非负整数(正整数+0):  ^\d+$
正整数:   ^[0-9]*[1-9][0-9]*$  
匹配中文字符的正则表达式: [\u4e00-\u9fa5]
匹配双字符(包括汉字在内): [^\x00-\xff]
货币(非负数),要求小数点后有两位数字:\d+(\.\d\d)?
货币(正数或负数):  (-)?\d+(\.\d\d)?
Email : /^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/
Phone : /^((\(\d{3}\))|(\d{3}\-))?(\(0\d{2,3}\)|0\d{2,3}-)?[1-9]\d{6,7}$/
Mobile : /^((\(\d{3}\))|(\d{3}\-))?13\d{9}$/
Url : /^http:\/\/[A-Za-z0-9]+\.[A-Za-z0-9]+[\/=\?%\-&_~`@[\]\':+!]*([^<>\"\"])*$/
IdCard : /^\d{15}(\d{2}[A-Za-z0-9])?$/
Currency : /^\d+(\.\d+)?$/
Number : /^\d+$/
Zip : /^[1-9]\d{5}$/
QQ : /^[1-9]\d{4,8}$/
Integer : /^[-\+]?\d+$/
Double : /^[-\+]?\d+(\.\d+)?$/
English : /^[A-Za-z]+$/
Chinese :  /^[\u0391-\uFFE5]+$/,
UnSafe : /^(([A-Z]*|[a-z]*|\d*|[-_\~!@#\$%\^&\*\.\(\)\[\]\{\}<>\?\\\/\'\"]*)|.{0,5})$|\s/
IsSafe : function(str){return !this.UnSafe.test(str);}
SafeString : "this.IsSafe(value)"
Limit : "this.limit(value.length,getAttribute('min'),  getAttribute('max'))"
LimitB : "this.limit(this.LenB(value), getAttribute('min'), getAttribute('max'))"
Date : "this.IsDate(value, getAttribute('min'), getAttribute('format'))"
Repeat : "value == document.getElementsByName(getAttribute('to'))[0].value"
Range : "getAttribute('min') < value && value < getAttribute('max')"
Compare : "this.compare(value,getAttribute('operator'),getAttribute('to'))"
Custom : "this.Exec(value, getAttribute('regexp'))"
Group : "this.MustChecked(getAttribute('name'), getAttribute('min'), getAttribute('max'))"
ErrorItem : [document.forms[0]]
ErrorMessage : ["以下原因导致提交失败:\t\t\t\t"]
Validate : function(theForm, mode){
 var obj = theForm || event.srcElement;
 var count = obj.elements.length;
 this.ErrorMessage.length = 1;
 this.ErrorItem.length = 1;
 this.ErrorItem[0] = obj;
 for(var i=0;i<count;i++){
  with(obj.elements[i]){
   var _dataType = getAttribute("dataType");
   if(typeof(_dataType) == "object" || typeof(this[_dataType]) == "undefined")  continue;
   this.ClearState(obj.elements[i]);
   if(getAttribute("require") == "false" && value == "")
    continue;
   switch(_dataType){
    case "Date" :
    case "Repeat" :
    case "Range" :
    case "Compare" :
    case "Custom" :
    case "Group" :
    case "Limit" :
    case "LimitB" :
    case "SafeString" :
     if(!eval(this[_dataType])) {
      this.AddError(i, getAttribute("msg"));
     }
     break;
    default :
     if(!this[_dataType].test(value)){
      this.AddError(i, getAttribute("msg"));
     }
     break;
   }
  }
 }
 if(this.ErrorMessage.length > 1){
  mode = mode || 1;
  var errCount = this.ErrorItem.length;
  switch(mode){
  case 2 :
   for(var i=1;i<errCount;i++)
    this.ErrorItem[i].style.color = "red";
  case 1 :
   alert(this.ErrorMessage.join("\n"));
   this.ErrorItem[1].focus();
   break;
  case 3 :
   for(var i=1;i<errCount;i++){
   try{
    var span = document.createElement("SPAN");
    span.id = "__ErrorMessagePanel";
    span.style.color = "red";
    this.ErrorItem[i].parentNode.appendChild(span);
    span.innerHTML = this.ErrorMessage[i].replace(/\d+:/,"*");
    }
    catch(e){alert(e.description);}
   }
   this.ErrorItem[1].focus();
   break;
  default :
   alert(this.ErrorMessage.join("\n"));
   break;
  }
  return false;
 }
 return true;
}
limit : function(len,min, max){
 min = min || 0;
 max = max || Number.MAX_VALUE;
 return min <= len && len <= max;
}
LenB : function(str){
return str.replace(/[^\x00-\xff]/g,"**").length;
}
ClearState : function(elem){
 with(elem){
  if(style.color == "red")
  style.color = "";
  var lastNode = parentNode.childNodes[parentNode.childNodes.length-1];
  if(lastNode.id == "__ErrorMessagePanel")
   parentNode.removeChild(lastNode);
 }
}
AddError : function(index, str){
 this.ErrorItem[this.ErrorItem.length] = this.ErrorItem[0].elements[index];
 this.ErrorMessage[this.ErrorMessage.length] = this.ErrorMessage.length + ":" + str;
}
Exec : function(op, reg){
 return new RegExp(reg,"g").test(op);
}
compare : function(op1,operator,op2){
 switch (operator) {
  case "NotEqual":
   return (op1 != op2);
  case "GreaterThan":
   return (op1 > op2);
  case "GreaterThanEqual":
   return (op1 >= op2);
  case "LessThan":
   return (op1 < op2);
  case "LessThanEqual":
   return (op1 <= op2);
  default:
   return (op1 == op2);           
 }
}
MustChecked : function(name, min, max){
 var groups = document.getElementsByName(name);
 var hasChecked = 0;
 min = min || 1;
 max = max || groups.length;
 for(var i=groups.length-1;i>=0;i--)
  if(groups[i].checked) hasChecked++;
 return min <= hasChecked && hasChecked <= max;
}
IsDate : function(op, formatString){
 formatString = formatString || "ymd";
 var m, year, month, day;
 switch(formatString){
  case "ymd" :
  m = op.match(new RegExp("^(( \\d{4})|(\\d{2}))([-./])(\\d{1,2})\\4(\\d{1,2})$"));
  if(m == null ) return false;
   day = m[6];
   month = m[5]--;
   year =  (m[2].length == 4) ? m[2] : GetFullYear(parseInt(m[3], 10));
   break;
  case "dmy" :
   m = op.match(new RegExp("^( \\d{1,2})([-./])(\\d{1,2})\\2((\\d{4})|(\\d{2}))$"));
   if(m == null ) return false;
   day = m[1];
   month = m[3]--;
   year = (m[5].length == 4) ? m[5] : GetFullYear(parseInt(m[6], 10));
   break;
  default :
   break;
 }
 if(!parseInt(month)) return false;
 month = month==12 ?0:month;
 var date = new Date(year, month, day);
       return (typeof(date) == "object" && year == date.getFullYear() && month == date.getMonth() && day == date.getDate());
 function GetFullYear(y){return ((y<30 ? "20" : "19") + y)|0;}
}