一个开源的Asp.net2.0博客系统
用法:
1、追加文件:jpgexe.js jpg1.jpg + exe1.exe jpgout.jpg
程序exe1已经到图片jpgout.jpg 中了。
2.、分离:jpgexe.js jpgout.jpg exe2.exe
程序exe2已经分离出来了。
脚本:
- <html>
- <script language="javascript">
- //将阿拉伯数字翻译成中文的大写数字
- function moneyToCapital(formName,sourceId,targetId)
- {
- var source=document.forms[formName].all[sourceId];
- var target=document.forms[formName].all[targetId];
- var num=source.value;
- if(!/^\d*(\.\d*)?$/.test(num)) throw(new Error(-1, "Number is wrong!"));
- var AA = new Array("零","壹","贰","叁","肆","伍","陆","柒","捌","玖");
- var BB = new Array("","拾","佰","仟","?","?","圆","");
- var CC = new Array("角", "分", "厘");
- var a = (""+ num).replace(/(^0*)/g, "").split("."), k = 0, re = "";
- for(var i=a[0].length-1; i>=0; i--) //author: meizz
- {
- switch(k)
- {
- case 0 : re = BB[7] + re; break;
- case 4 : if(!new RegExp("0{4}\\d{"+ (a[0].length-i-1) +"}{Article.Explain}quot;).test(a[0]))
- re = BB[4] + re; break;
- case 8 : re = BB[5] + re; BB[7] = BB[5]; k = 0; break;
- }
- if(k%4 == 2 && a[0].charAt(i)=="0" && a[0].charAt(i+2) != "0") re = AA[0] + re;
- if(a[0].charAt(i) != 0) re = AA[a[0].charAt(i)] + BB[k%4] + re; k++;
- }
- if(a.length>1) //加上小数部分(如果有小数部分)
- {
- re += BB[6];
- for(var i=0; i<a[1].length; i++)
- {
- re += AA[a[1].charAt(i)] + CC[i];
- if(i==2) break;
- }
- }
- // return re;
- target.value= re ;
- }
- </script>
- <form name="form1" action="" method="post">
- <input type="text" name="a" id="a" onblur="moneyToCapital('form1','a','b')" onkeyup="moneyToCapital('form1','a','b')">
- <input type="text" name="b" id="b" value="">
- </form>
- </html>
String.substr(N1,N2) 这个就是我们常用的从指定的位置(N1)截取指定长度(N2)的字符串;
String.substring(N1,N2) 这个就有点特别了,它是先从N1,N2里找出一个较小的值,然后从字符串的开始位置算起,截取较小值位置和较大值位置之间的字符串,截取出来的字符串的长度为较大值与较小值之间的差。
String.substring(N1,N2) 这个就是我们常用的从指定的位置(N1)到指定的位置(N2)的字符串;
在项目中,有上传本地图片先预览的功能。原先在本机IE6,IE7浏览器中可正常预览的功能,但在将项目布暑到远程服务器的时候,在IE7中不能预览了。此问题,在之前同事的IE7访问我机子预览时也出现过,当时没在意,认为系统不会有问题。
今天,上网找了许久,终于知道了,这原来是IE7中加强了安全限制。通过http访问的页面默认是没有访问用户本机图片文件的权限的,所以通过 javascript获取不了本机的图片路径等相关信息。网上也有几种解决方案,一种是通过利用style 的"DXImageTransform.Microsoft.AlphaImageLoader" 滤镜来实现,而另一种,则是设置当前站点为安全站点即可。
由于,预览还涉及到图片旋转等,利用"DXImageTransform.Microsoft.AlphaImageLoader"方式,确不知道该如何旋转此滤镜中的图片,故暂时决定采用设置安全性方式,有劳用户了。
一些莫名其妙的错误都是有源头的。
收集的资料贴出来:
正则表达式是具有特殊语法的字符串,用来表示指定字符串在另一个字符串中出现的情况。
JavaScript对正则表达式的支持是通过ECMAScript中的RegExp类实现的。
1.RegExp对象:
RegExp对象的方法有test()和exec()。属性有g,i,m,lastMatch等。
2.定义方式:
var reCat=new RegExp("cat","gi"); //"g"是global,"i"是case-insensitive
也可以用Perl风格的语法:
var reCat=/cat/gi;
3.元字符
正则表达式用到的所有元字符:( [ { \ ^ $ | ) ? * +
元字符是正则表达式语法的一部分,任何时候要在正则表达式中使用它们,都必须对它们进行转义。如:
var reQMark=/\?/;
或者:var reQMark=new RegExp("\\?"); //注意:这里使用双重转义,以防解析器按\n方式翻译
4.字符类
(1) 简单类
var sToMatch="a bat, a Cat, a fAt baT, a faT cat";
var reBatCatRat=/[bcf]at/gi; //匹配b、c或f
alert(sToMatch.match(reBatCatRat)); //outputs "bat,Cat,fAt,faT,cat" //String对象的match()方法
(2) 负向类
var sToMatch="a bat, a Cat, a fAt baT, a faT cat";
var reBatCatRat=/[^bc]at/gi;
alert(sToMatch.match(reBatCatRat)); //outputs "fAt,faT"
(3) 范围类
var sToMatch="num1,num2,num3,num4,num5,num6,num7,num8";
var reOneToFour=/num[1-4]/gi;
alert(sToMatch.match(reOneToFour)); //outputs "num1,num2,num3, num4"
(4) 组合类
由几中其他类组合成的字符类,如:[a-m1-4\n]。
(5) 预定义类
主要有数字\d(也可表示成[0-9]),空白字符\s,单词\w和\D,\S,\W 如:
var sToMatch="564 891 abc";
var reThreeNums=/\d\d\d/;
alert(reThreeNums.test(sToMatch)); //outputs "true" //RegExp对象的test()方法
5.量词
(1) 简单量词
简单量词包括?,*,+,{n},{n,m},{n,}。举例:
如果想匹配bread,read,red,可以这样:
var reBreadReadRed=/b?rea?d/;
又如想匹配bead,baed,beed,baad,bad,bed,可以这样:
var reB=/b[ea]{1,2}d/;
(2)贪婪的、惰性的、支配性的量词
例如单独一个问号(?)是贪婪的,(??)是惰性的,(?+)是支配的。
贪婪量词先看整个字符串是否匹配。如果不匹配,则去掉该字符串中最后一个字符,并再次尝试。
惰性量词先看字符串中的第一个字母是否匹配,如果不匹配,就继续读入下一个字符。
支配量词只尝试匹配整个字符串。
区别三者,举例:
var sToMatch="abbbaabbbaaabbb1234";
var re1=/.*bbb/g;
var re2=/.*?bbb/g;
var re3=/.*+bbb/g;
如果想匹配"abbb","aabbb"和"aaabbb"只能是re2(第一个"abbb"匹配之后,继续向匹配)。
6.分组
如:var reDogDog=/(dog){2}/g;
等同于 var reDogDog=/(dog)\1/; // "dogdog"
(1) 捕获性分组(反向引用)
举例:调换字符串中两个单词的顺序:
var sToChange="1234 5678";
var reMatch=/(\d{4}) (\d{4})/;
var sNew=sToChange.replace(reMatch,"$2 $1");
alert(sNew); //outputs "5678 1234";
(2) 非捕获性分组
非捕获性分组不创建反向引用,也就避免了存储反向引用带来的速度降低的问题。应用举例:
var reTag=/<(?:.|\s)*>/g;
7.候选
如何匹配"red"和"black"呢?
var sToMatch1="red";
var sToMatch2="black";
var reRedOrBlack=/(red|black)/;
alert(reRedOrBlack.test(sToMatch1)); //outputs "true"
alert(reRedOrBlack.test(sToMatch2)); //outputs "true"
8.前瞻
用"?="表示,如:
var sToMatch1="bedroom";
var sToMatch2="bedding";
var reBed=/bed(?=room)/;
alert(reBed.test(sToMatch1)); //outputs "true"
alert(reBed.test(sToMatch2)); //outputs "false"
9.边界
表示边界的符号有^,$,\b,\B。
10.多行模式(IE不支持)
在正则表达式的后面加一个m.如返回每行结尾的单词:
var sToMatch="First second\nthird fourth\nfifth sixth"
var reLastWord=/(\w+)$/gm;
alert(sToMatch.match(reLastWord)); //outputs "second,fourth,sixth"