当前位置: 代码迷 >> JavaScript >> js几个小技艺常用正则表达式
  详细解决方案

js几个小技艺常用正则表达式

热度:178   发布时间:2012-07-03 13:37:43.0
js几个小技巧常用正则表达式

js几个小技巧常用正则表达式
2011年05月19日
  一项都是js中的小技巧,但十分的实用!
  1.document.write(); 输出语句
  2.JS中的注释为//
  3.传统的HTML文档顺序是:document->html->(head,body)
  4.一个浏览器窗口中的DOM顺序是:window->(navigator,screen,history,location,document)
  5.得到表单中元素的名称和值:document.getElementById(表单中元素的ID号).name(或value)
  6.一个小写转大写的JS: document.getElementById(output).value = document.getElementById(input).value.toUpperCase();
  7.JS中的值类型:String,Number,Boolean,Null,Object,Function
  8.JS中的字符型转换成数值型:parseInt(),parseFloat()
  9.JS中的数字转换成字符型:(+变量)
  10.JS中的取字符串长度是:(length)
  11.JS中的字符与字符相连接使用+号.
  12.JS中的比较操作符有:==等于,!=不等于,>,>=,
  49.引用一个文件式的JS:
  50.指定在不支持脚本的浏览器显示的HTML:
  51.当超链和onCLICK事件都有时,则老版本的浏览器转向a.html,否则转向b.html.例:dfsadf
  52.JS的内建对象有:Array,Boolean,Date,Error,EvalError,Function,Math,Number,Object,RangeError,ReferenceError,RegExp,String,SyntaxError,TypeError,URIError
  53.JS中的换行:\n
  54.窗口全屏大小:function fullScreen(){ this.moveTo(0,0);this.outerWidth=screen.availWidth;this.outerHeight=screen.availHeight;}window.maximize=fullScreen;
  55.JS中的all代表其下层的全部元素
  56.JS中的焦点顺序:document.getElementByid(表单元素).tabIndex = 1
  57.innerHTML的值是表单元素的值:如how are you,则innerHTML的值就是:how are you
  58.innerTEXT的值和上面的一样,只不过不会把这种标记显示出来.
  59.contentEditable可设置元素是否可被修改,isContentEditable返回是否可修改的状态.
  60.isDisabled判断是否为禁止状态.disabled设置禁止状态
  61.length取得长度,返回整型数值
  62.addBehavior()是一种JS调用的外部函数文件其扩展名为.htc
  63.window.focus()使当前的窗口在所有窗口之前.
  64.blur()指失去焦点.与FOCUS()相反.
  65.select()指元素为选中状态.
  66.防止用户对文本框中输入文本:onfocus=this.blur()
  67.取出该元素在页面中出现的数量:document.all.tags(div(或其它HTML标记符)).length
  68.JS中分为两种窗体输出:模态和非模态.window.showModaldialog(),window.showModeless()
  69.状态栏文字的设置:window.status=’文字’,默认的状态栏文字设置:window.defaultStatus = ’文字.’;
  70.添加到收藏夹:external.AddFavorite(http://www.dannyg.com";,jaskdlf);
  71.JS中遇到脚本错误时不做任何操作:window.onerror = doNothing; 指定错误句柄的语法为:window.onerror = handleError;
  72.JS中指定当前打开窗口的父窗口:window.opener,支持opener.opener...的多重继续.
  73.JS中的self指的是当前的窗口
  74.JS中状态栏显示内容:window.status=内容
  75.JS中的top指的是框架集中最顶层的框架
  76.JS中关闭当前的窗口:window.close();
  77.JS中提出是否确认的框:if(confirm(Are you sure?)){alert(ok);}else{alert(Not Ok);}
  78.JS中的窗口重定向:window.navigate(Error(Not a valid IP address!)
  }
  }
  不过上面的程序如果不用正则表达式,而直接用split函数来分解可能更简单,程序如下:
  var ip=10.100.20.168
  ip=ip.split(.)
  alert(IP值是:+(ip[0]*255*255*255+ip[1]*255*255+ip[2]*255+ip[3]*1))
  匹配Email地址的正则表达式:\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*
  匹配网址URL的正则表达式:http://([\w-]+\.)+[\w-]+(/[\w- ./?%&=]*)?
  利用正则表达式去除字串中重复的字符的算法程序:[注:此程序不正确,原因见本贴回复]
  var s=abacabefgeeii
  var s1=s.replace(/(.).*\1/g,$1)
  var re=new RegExp([+s1+],g)
  var s2=s.replace(re,)
  alert(s1+s2) //结果为:abcefgi
  这个方法对于字符顺序有要求的字符串可能不适用。
  得用正则表达式从URL地址中提取文件名的javascript程序,如下结果为page1
  s=http://www.9499.net/page1.htm
  s=s.replace(/(.*\/){0,}([^\.]+).*/ig,$2)
  alert(s)
  利用正则表达式限制网页表单里的文本框输入内容:
  用正则表达式限制只能输入中文: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,’’))
  ********************************************************************************************************************************
  几个正则表式的应用无论在Java还是Javascript中对正则表达式都给了非常高效的实现。能够用好正则表达式,事半功倍呀。程序的性能也有非常大的提高。最近使用的经验总结:
  1. 在Eclipse中,一段文字变成字符串。Find[(^.*$)] replase ['$1'+] 而在UltraEdit中用的是^1,有些许不同。
  2. 在Javascript中的Trim :str.replace(/^\s*|\s*$/g,"");
  3. 在Javascript中的去掉空行:str = str.replace(/(\n[\s|\t]*\r*\n)/g, '\n');
  4. 在Javascript中的去掉首尾的空行或回行:str.replace(/^[\n|\r\n]*|[\n|\r\n]*$/g,'');
  5. 在Javascript中按行分割字符串:split(/[\n|\r\n]{1,}/); 空行不会出现;
  6. UE中将'[ ]' 替换为'[{{}}]', find '^[^(*^)^]' replace with '[{{^1}}]'
  7. 注释中/** */使用懒惰的匹配方式 .*?来达到中间的注释也能被发现。
  

  *******************************************************************************************************************************
  其他语言的一些参考
  常用数字验证
  正则表达式
  "d{n}" n为规定长度
  "d{n,m}" n到m的长度范围
  中国电话号码验证
  匹配形式如:0511-4405222 或者021-87888822 或者 021-44055520-555 或者 (0511)4405222
  正则表达式 "((d{3,4})|d{3,4}-)?d{7,8}(-d{3})*"
  中国邮政编码验证
  匹配形式如:215421
  正则表达式 "d{6}"
  电子邮件验证
  匹配形式如:justali@justdn.com
  正则表达式 "w+([-+.]w+)*@w+([-.]w+)*.w+([-.]w+)*"
  身份证验证
  匹配形式如:15位或者18位身份证
  正则表达式 "d{18}|d{15}"
  非法字符验证
  匹配非法字符如: & / ' |
  正则表达式 [^&/|'\]+
  日期验证
  匹配形式如:20030718,030718
  范围:1900--2099
  正则表达式((((19){1}|(20){1})d{2})|d{2})[01]{1}d{1}[0-3]{1}d{1}
  "^\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