Submitted by on 2006, October 30, 7:38 AM
刚刚做的案子中用到了,所以淡水河边这厮就把它贴出来了。有注释。
| 代码: |
sub createimg(FileName)
" Aspjpeg 功能设置
Set Jpeg = Server.CreateObject("Persits.Jpeg")
" 获取源图片路径
Path = Server.MapPath("../upload/")&"/"&FileName
" 打开源图片
Jpeg.Open Path
" 设定生成缩略图细节 这里有很多种设定方法 下面的方法是先判断宽高比 然后按比例缩放
If Jpeg.OriginalWidth / Jpeg.OriginalHeight > 1 then
Jpeg.Width = 128
Jpeg.Height = int((128/Jpeg.OriginalWidth)*Jpeg.OriginalHeight)
elseif Jpeg.OriginalWidth / Jpeg.OriginalHeight < 1 then
Jpeg.Width = 128
Jpeg.Height= int((128/Jpeg.OriginalWidth)*Jpeg.Height)
end if
" 设定锐化效果
Jpeg.Sharpen 1, 130
" 向指定路径生成缩略图
Jpeg.Save Server.MapPath("../upload")&"/small"&FileName
end sub
|
调用
call createimg(pic)"pic为图片名
网站|ASP备忘 | 评论:0
| Trackbacks:0
| 阅读:1238
Submitted by on 2006, October 29, 10:48 PM
现在,当弹出千篇一律的Alert警告框被这样的一种方式取代时,给人的感觉是相当的新鲜的。
这样
[html]
<input type="button" value="点击这里" onclick="sAlert("测试效果<br>还可以直接书写HTML代码 <br>? 2006");" />
<script type="text/javascript" language="javascript">
//Author:Daviv
//Blog:
http://blog.163.com/jxdawe...
//Date:2006-10-28
//Email:jxdawei@gmail.com
function sAlert(str){
var msgw,msgh,bordercolor;
msgw=400;//提示窗口的宽度
msgh=100;//提示窗口的高度
bordercolor="#336699";//提示窗口的边框颜色
titlecolor="#99CCFF";//提示窗口的标题颜色
var sWidth,sHeight;
sWidth=document.body.offsetWidth;
sHeight=document.body.offsetHeight;
var bgObj=document.createElement("div");
bgObj.setAttribute("id","bgDiv");
bgObj.style.position="absolute";
bgObj.style.top="0";
bgObj.style.background="#777";
bgObj.style.filter="progid:DXImageTransform.Microsoft.Alpha(style=3,opacity=25,finishOpacity=75";
bgObj.style.opacity="0.6";
bgObj.style.left="0";
bgObj.style.width=sWidth + "px";
bgObj.style.height=sHeight + "px";
document.body.appendChild(bgObj);
var msgObj=document.createElement("div")
msgObj.setAttribute("id","msgDiv");
msgObj.setAttribute("align","center");
msgObj.style.position="absolute";
msgObj.style.background="white";
msgObj.style.font="12px/1.6em Verdana, Geneva, Arial, Helvetica, sans-serif";
msgObj.style.border="1px solid " + bordercolor;
msgObj.style.width=msgw + "px";
msgObj.style.height=msgh + "px";
msgObj.style.top=(document.documentElement.scrollTop + (sHeight-msgh)/2) + "px";
msgObj.style.left=(sWidth-msgw)/2 + "px";
var title=document.createElement("h4");
title.setAttribute("id","msgTitle");
title.setAttribute("align","right");
title.style.margin="0";
title.style.padding="3px";
title.style.background=bordercolor;
title.style.filter="progid:DXImageTransform.Microsoft.Alpha(startX=20, startY=20, finishX=100, finishY=100,style=1,opacity=75,finishOpacity=100);";
title.style.opacity="0.75";
title.style.border="1px solid " + bordercolor;
title.style.height="18px";
title.style.font="12px Verdana, Geneva, Arial, Helvetica, sans-serif";
title.style.color="white";
title.style.cursor="pointer";
title.innerHTML="<b>×</b>";
title.onclick=function(){
document.body.removeChild(bgObj);
document.getElementById("msgDiv").removeChild(title);
document.body.removeChild(msgObj);
}
document.body.appendChild(msgObj);
document.getElementById("msgDiv").appendChild(title);
var txt=document.createElement("p");
txt.style.margin="1em 0"
txt.setAttribute("id","msgTxt");
txt.innerHTML=str;
document.getElementById("msgDiv").appendChild(txt);
}
</script>
[/html]
把SCRIPT做成一个JS文件就可以了。
Tags: JS, alert
网页|前台相关 | 评论:0
| Trackbacks:0
| 阅读:1255
Submitted by on 2006, October 28, 7:03 AM
因为是试看(还是广东话,有字幕),淡水河边这厮只看了一半。感觉值得深思和反省。推荐一下。
影片介绍:
一个失败的男演员,为何要打造一位二十出头的超级女星?
一个成功的经理人,如何能改造一位二十年前的最佳新人……
潘家辉 (辉) 在他二十出头的时候,便攀上了他事业的高峰 --- 夺得电影金像奖最佳新人奖,辉认为自己的成功,是个人的努力加上实力,辉被电视台力捧,他却不懂得珍惜机会,不但变得越来越挑剔执拗,而且经常批评别人,辉的事业和人气下滑,渐渐由男主角变为男配角,再由男配角变做二、三线,甚至沦为色魔奸角……最后,连电视台也容不下他,辉意志消沉,在机缘巧合之下,当上了临时演员的领班,遇到对演戏满腔热诚的吴晓菲 (菲)……
菲什么都肯尝试,不怕吃亏,无论吊维亚、跳海、扑倒,即使是做替身,看不到样貌,没有对白,菲也绝不松懈,全力以赴,菲的义无反顾打动了辉,他决定将自己的一套独门演戏秘方,倾囊相授,辉成为了菲的经理人兼导师,二人日夕相对,辉的情格,也被菲改变了不少,重拾对演戏的热诚。
就在辉发觉爱上了菲的时候,菲却要离开辉,到日本踏上女主角之路……
幕后制作:超强阵容
刘国昌是香港新一代导演中非常突出的一人。是香港写实电影的领军人。其作品以高度纪实性及拍摄诚意闻名。本片阵容豪华,除了影帝刘青云和被称为“内地崔智友”的霍思燕主演。另外,尔东升、陈果、梁家辉、郑伊健、草蜢等众多影人将客串本片。
霍思燕自述
谈起“经纪人”刘青云获得自己好感的经过,霍思燕说:“刘青云戏里戏外都帮助我很多,比如戏里教我如何摆POSE、如何施展诱惑、如何运用冷傲的眼神,为了让我获得与著名组合草蜢合作的机会,竟然跪求导演,他对我种种的好,我很难不会爱上他,所以导演说我们的恋爱是‘师生恋’。我是第一次同香港导演合作,刚刚来剧组时我听不懂广东话,导演又不会说国语,刘青云常常现场翻译。现场也会有很多紧急情况发生,情急之下他来不及翻译时,就用眼神示意我。”
Tags: 电影
生活|我的生活 | 评论:0
| Trackbacks:0
| 阅读:1034
Submitted by on 2006, October 27, 7:19 AM
淡水河边这厮不喜欢多废话。
| 代码: |
function Wa_SetImgAutoSize()
{
var img=document.all.img1;//获取图片
var MaxWidth=200;//设置图片宽度界限@@@@@@@@@@@
var MaxHeight=100;//设置图片高度界限@@@@@@@@@@@@@@@
var HeightWidth=img.offsetHeight/img.offsetWidth;//设置高宽比
var WidthHeight=img.offsetWidth/img.offsetHeight;//设置宽高比
if(img.readyState!="complete")return false;//确保图片完全加载
if(img.offsetWidth>MaxWidth){
img.width=MaxWidth;
img.height=MaxWidth*HeightWidth;
}
if(img.offsetHeight>MaxHeight){
img.height=MaxHeight;
img.width=MaxHeight*WidthHeight;
}
}
</script> |
应用:
<img src="" border=0 id="img1" onload="Wa_SetImgAutoSize();">
Tags: JS, 缩略图, 缩放
网站|ASP备忘 | 评论:0
| Trackbacks:0
| 阅读:1428
Submitted by on 2006, October 27, 5:33 AM
| 代码: |
<%
"ASPJPEG综合操作CLASS
Class AspJpeg
Dim AspJpeg_Obj,obj
Private Img_MathPath_From,Img_MathPath_To,Img_Reduce_Size,CoverIf
Private Img_Frame_Size,Img_Frame_Color,Img_Frame_Solid,Img_Frame_Width,Img_Frame_Height
Private Img_Font_Content,Img_Font_Family,Img_Font_Color,Img_Font_Quality,Img_Font_Size,Img_Font_Bold,Img_Font_X,Img_Font_Y
Private Img_PicIn_Path,Img_PicIn_X,Img_PicIn_Y
"--------------取原文件路径
Public Property Let MathPathFrom(StrType)
Img_MathPath_From=StrType
End Property
"--------------取文件保存路径
Public Property Let MathPathTo(strType)
Img_MathPath_To=strType
End Property
"--------------保存文件时是否覆盖已有文件
Public Property Let CovePro(LngSize)
If LngSize=0 or LngSize=1 or LngSize=true or LngSize=false then
CoverIf=LngSize
End If
End Property
"---------------取缩略图/放大图 缩略值
Public Property Let ReduceSize(LngSize)
If isNumeric(LngSize) then
Img_Reduce_Size=LngSize
End If
End Property
"---------------取描边属性
"边框粗细
Public Property Let FrameSize(LngSize)
If isNumeric(LngSize) then
Img_Frame_Size=Clng(LngSize)
End If
End Property
"边框宽度
Public Property Let FrameWidth(LngSize)
If isNumeric(LngSize) then
Img_Frame_Width=Clng(LngSize)
End If
End Property
"边框高度
Public Property Let FrameHeight(LngSize)
If isNumeric(LngSize) then
Img_Frame_Height=Clng(LngSize)
End If
End Property
"边框颜色
Public Property Let FrameColor(strType)
If strType<>"" then
Img_Frame_Color=strType
End If
End Property
"边框是否加粗
Public Property Let FrameSolid(LngSize)
If LngSize=1 or LngSize=0 or LngSize=true or LngSize=false then
Img_Frame_Solid=LngSize
End If
End Property
"---------------取插入文字属性
"插入的文字
Public Property Let Content(strType)
If strType<>"" then
Img_Font_Content=strType
End If
End Property
"文字字体
Public Property Let FontFamily(strType)
If strType<>"" then
Img_Font_Family=strType
End If
End Property
"文字颜色
Public Property Let FontColor(strType)
If strType<>"" then
Img_Font_Color=strType
End If
End Property
"文字品质
Public Property Let FontQuality(LngSize)
If isNumeric(LngSize) then
Img_Font_Quality=Clng(LngSize)
End If
End Property
"文字大小
Public Property Let FontSize(LngSize)
If isNumeric(LngSize) then
Img_Font_Size=Clng(LngSize)
End If
End Property
"文字是否加粗
Public Property Let FontBold(LngSize)
If LngSize=1 or LngSize=0 or LngSize=true or LngSize=false then
Img_Font_Bold=LngSize
End If
End Property
"输入文字的X坐标
Public Property Let FontX(LngSize)
If isNumeric(LngSize) then
Img_Font_X=Clng(LngSize)
End If
End Property
"输入文字的Y坐标
Public Property Let FontY(LngSize)
If isNumeric(LngSize) then
Img_Font_Y=Clng(LngSize)
End If
End Property
"---------------取插入图片属性
"插入图片的路径
Public Property Let PicInPath(strType)
Img_PicIn_Path=strType
End Property
"图片插入的X坐标
Public Property Let PicInX(LngSize)
If isNumeric(LngSize) then
Img_PicIn_X=Clng(LngSize)
End If
End Property
"图片插入的Y坐标
Public Property Let PicInY(LngSize)
If isNumeric(LngSize) then
Img_PicIn_Y=Clng(LngSize)
End If
End Property
Private Sub Class_Initialize()
Set AspJpeg_Obj=createObject("Persits.Jpeg")
Img_MathPath_From=""
Img_MathPath_To=""
Img_Reduce_Size=150
Img_Frame_Size=1
"Img_Frame_Width=0
"Img_Frame_Height=0
"Img_Frame_Color="&H000000"
"Img_Frame_Bold=false
Img_Font_Content="GoldenLeaf"
"Img_Font_Family="Arial"
"Img_Font_Color="&H000000"
Img_Font_Quality=3
Img_Font_Size=14
"Img_Font_Bold=False
Img_Font_X=10
Img_Font_Y=5
"Img_PicIn_X=0
"Img_PicIn_Y=0
CoverIf=1
End Sub
Private Sub Class_Terminate()
Err.Clear
Set AspJpeg_Obj=Nothing
End Sub
"判断文件是否存在
Private Function FileIs(path)
Set fsos=Server.createObject("Scripting.FileSystemObject")
FileIs=fsos.FileExists(path)
Set fsos=Nothing
End Function
"判断目录是否存在
Private Function FolderIs(path)
Set fsos=Server.createObject("Scripting.FileSystemObject")
FolderIs=fsos.FolderExists(path)
Set fsos=Nothing
End Function
"*******************************************
"函数作用:取得当前文件的上一级路径
"*******************************************
Private Function UpDir(ByVal D)
If Len(D) = 0 then
UpDir=""
Else
UpDir=Left(D,InStrRev(D,"\")-1)
End If
End Function
Private Function Errors(Errors_id)
select Case Errors_id
Case "0"
Errors="指定文件不存在"
Case 1
Errors="指定目录不存在"
Case 2
Errors="已存在相同名称文件"
Case 3
Errors="参数溢出"
End select
End Function
"取图片宽度
Public Function ImgInfo_Width(Img_MathPath)
If Not(FileIs(Img_MathPath)) then
"Exit Function
ImgInfo_Width=Errors(0)
Else
AspJpeg_Obj.Open Img_MathPath
ImgInfo_Width=AspJpeg_Obj.width
End If
End Function
"取图片高度
Public Function ImgInfo_Height(Img_MathPath)
If Not(FileIs(Img_MathPath)) then
"Exit Function
ImgInfo_Height=Errors(0)
Else
AspJpeg_Obj.Open Img_MathPath
ImgInfo_Height=AspJpeg_Obj.height
End If
End Function
"生成缩略图/放大图
Public Function Img_Reduce()
If Not(FileIs(Img_MathPath_From)) then
Img_Reduce=Errors(0)
Exit Function
End If
If Not(FolderIs(UpDir(Img_MathPath_To))) then
Img_Reduce=Errors(1)
Exit Function
End If
If CoverIf=0 or CoverIf=False then
If FileIs(Img_MathPath_To) then
Img_Reduce=Errors(2)
Exit Function
End If
End If
AspJpeg_Obj.Open Img_MathPath_From
AspJpeg_Obj.PreserveAspectRatio = True
If AspJpeg_Obj.OriginalWidth>AspJpeg_Obj.OriginalHeight Then
AspJpeg_Obj.Width=Img_Reduce_Size
Else
AspJpeg_Obj.Height=Img_Reduce_Size
End If
If AspJpeg_Obj.OriginalWidth>Img_Reduce_Size or AspJpeg_Obj.OriginalHeight>Img_Reduce_Size Then
If AspJpeg_Obj.Width<Img_Reduce_Size or AspJpeg_Obj.Height<Img_Reduce_Size then
Set AspJpeg_Obj_New=createObject("Persits.Jpeg")
AspJpeg_Obj_New.new Img_Reduce_Size,Img_Reduce_Size,&HFFFFFF
AspJpeg_Obj_New.DrawImage (150-AspJpeg_Obj.width)/2,(150-AspJpeg_Obj.height)/2,AspJpeg_Obj
If Img_Frame_Size>0 then
Call Img_Pen(AspJpeg_Obj_New)
End If
If Img_Font_Content<>"" then
Img_Font_X=AspJpeg_Obj_New.Width/2
Img_Font_Y=AspJpeg_Obj_New.Height-15
Call Img_Font(AspJpeg_Obj_New)
End If
AspJpeg_Obj_New.Sharpen 1, 130
AspJpeg_Obj_New.Save Img_MathPath_To
Set AspJpeg_Obj_New=Nothing
Else
If Img_Frame_Size>0 then
Call Img_Pen(AspJpeg_Obj)
End If
If Img_Font_Content<>"" then
Img_Font_X=AspJpeg_Obj.Width/2
Img_Font_Y=AspJpeg_Obj.Height-15
Call Img_Font(AspJpeg_Obj)
End If
AspJpeg_Obj.Sharpen 1, 130
AspJpeg_Obj.Save Img_MathPath_To
End If
Else
If Img_Frame_Size>0 then
Call Img_Pen(AspJpeg_Obj)
End If
If Img_Font_Content<>"" then
Img_Font_X=AspJpeg_Obj.Width/2
Img_Font_Y=AspJpeg_Obj.Height-15
Call Img_Font(AspJpeg_Obj)
End If
AspJpeg_Obj.Sharpen 1, 130
AspJpeg_Obj.Save Img_MathPath_To
End If
End Function
"生成水印
Public Function Img_WaterMark()
If Not(FileIs(Img_MathPath_From)) then
Img_WaterMark=Errors(0)
Exit Function
End If
If Img_MathPath_To="" then
Img_MathPath_To=Img_MathPath_From
ElseIf Not(FolderIs(UpDir(Img_MathPath_To))) then
Img_WaterMark=Errors(1)
Exit Function
End If
If CoverIf=0 or CoverIf=false then
If Img_MathPath_To<>Img_MathPath_From and FileIs(Img_MathPath_To) then
Img_WaterMark=Errors(2)
Exit Function
End If
End If
AspJpeg_Obj.Open Img_MathPath_From
If Img_PicIn_Path<>"" then
If Not(FileIs(Img_PicIn_Path)) then
Img_WaterMark=Errors(0)
Exit Function
End If
Set AspJpeg_Obj_New=createObject("Persits.Jpeg")
AspJpeg_Obj_New.Open Img_PicIn_Path
AspJpeg_Obj.PreserveAspectRatio = True
AspJpeg_Obj_New.PreserveAspectRatio = True
If AspJpeg_Obj.OriginalWidth<Img_Reduce_Size or AspJpeg_Obj.OriginalHeight<Img_Reduce_Size then
Img_WaterMark=Errors(3)
Exit Function
End If
If AspJpeg_Obj_New.OriginalWidth>AspJpeg_Obj_New.OriginalHeight Then
AspJpeg_Obj_New.Width=Img_Reduce_Size
Else
AspJpeg_Obj_New.Height=Img_Reduce_Size
End If
If Img_PicIn_X="" then Img_PicIn_X=AspJpeg_Obj.Width-AspJpeg_Obj_New.Width
If Img_PicIn_Y="" then Img_PicIn_Y=AspJpeg_Obj.Height-AspJpeg_Obj_New.Height
AspJpeg_Obj.DrawImage Img_PicIn_X,Img_PicIn_Y,AspJpeg_Obj_New
Set AspJpeg_Obj_New=Nothing
End If
If Img_Frame_Size>0 then
Call Img_Pen(AspJpeg_Obj)
End If
If Img_Font_Content<>"" then
Call Img_Font(AspJpeg_Obj)
End If
"AspJpeg_Obj.Sharpen 1, 130
AspJpeg_Obj.Save Img_MathPath_To
End Function
"生成框架
Private Function Img_Pen(Obj)
If Img_Frame_Width=0 then Img_Frame_Width=Obj.Width
If Img_Frame_Height=0 then Img_Frame_Height=Obj.Height
Obj.Canvas.Pen.Color = Img_Frame_Color
Obj.Canvas.Pen.Width = Img_Frame_Size
Obj.Canvas.Brush.Solid = Img_Frame_Solid
Obj.Canvas.Bar 1,1,Img_Frame_Width,Img_Frame_Height
End Function
"生成水印字
Private Function Img_Font(Obj)
Obj.Canvas.Font.Color = Img_Font_Color
Obj.Canvas.Font.Family = Img_Font_Family
Obj.Canvas.Font.Quality=Img_Font_Quality
Obj.Canvas.Font.Size=Img_Font_Size
Obj.Canvas.Font.Bold = Img_Font_Bold
Obj.Canvas.Print Img_Font_X,Img_Font_Y,Img_Font_Content
End Function
End Class
%> |
这个类可以公开调用
1. ImgInfo_Height 取图片高度
2. ImgInfo_Width 取图片宽度
调用方法:
| 代码: |
Dim NewObj,Pic_h,Pic_w
Set NewObj=New AspJpeg
Pic_h=NewObj.ImgInfo_Height("f:/test.jpg")
Pic_w=NewObj.ImgInfo_Width("f:/test.jpg")
Set NewObj=Nothing
Response.Write "This Picture"s Height is "&Pic_h
Response.Write "This Picture"s Width is "&Pic_w
Response.End |
3. Img_Reduce 对指定图片缩小或放大并保存(可选择是否加水印,是否加框架)
必须定义声明 MathPathFrom,MathPathTo
默认为缩放至150X150 图案 如按比例缩放后图案小于该尺寸,则补充空白图片
默认文件自动覆盖
实例:
| 代码: |
Dim NewObj,NewCommand
Set NewObj=New AspJpeg
NewObj.MathPathFrom="f:/test.jpg"
NewObj.MathPathTo="f:/reduce.jpg"
NewCommand=NewObj.Img_Reduce
Set NewObj=Nothing
If NewCommand<>"" then
Response.Write "Success"
Else
"图片操作过程中出现错误
Response.Write "Failed"
End If |
4. Img_WaterMark 给指定图片添加水印
水印可以为图片 文字 或 2者结合
Tags: aspjpeg
网站|ASP备忘 | 评论:0
| Trackbacks:0
| 阅读:1166
Submitted by on 2006, October 26, 8:21 AM
我的需求:
在进行了更新等操作后,经过提示页面,延迟2秒,回到原来操作的页面(更新过的)
重点在提示页面“OK.ASP”。界面如下
程序:
| 代码: |
……
<%
dim come
come=Request.QueryString("come")
%>
<meta http-equiv=refresh content="2; url=<%=come%>">
<title>后台管理</title>
<style type="text/css">
……
|
操作页面在操作完成后 response.Redirect "ok.asp?come=操作页"
如果只是想要第次加载的页面都是重新读取的最近页面,可以用禁止页面的缓存来实现,页面只要打开就必须更新一次数据,而不是保持原有的数据不变,相当于刷新了一次。
"////////////以下禁止缓存模块加在页面的开始//////////////////////
<%
Response.CacheControl = "no-cache"
Response.AddHeader "Pragma", "no-cache"
%>
Tags: ASP延迟, 禁止缓存
网站|ASP备忘 | 评论:0
| Trackbacks:0
| 阅读:1151
Submitted by on 2006, October 23, 5:31 AM
也算是自己写的,语言组织能力够差的。
» 阅读全文
Tags: eod, <<<
网站|PHP学习 | 评论:0
| Trackbacks:0
| 阅读:1438
Submitted by on 2006, October 20, 6:41 PM
电信,网通哪个更快?
以前淡水河边用过MSN spaces,因为速度总是那么的慢所以就放弃了。
近日偶然回到LIVE spaces,感觉速度很快。以为MSN升成LIVE了,速度也上来了。回家后淡水河边这厮又想上去看看。发现又慢了。
颇为困惑。因为两次线路不一样,故而特地又试了几次。结果是,网通访问LIVE SPACES很快,电信ADSL就慢了。大家可以自己去试一下,看看是不是和淡水河边这厮说得一样。
唉,怎么说呢?不说了
乱谈|杂七杂八 | 评论:0
| Trackbacks:0
| 阅读:1172
Submitted by on 2006, October 19, 2:50 AM
想必很多人都对正则表达式都头疼.今天,我以我的认识,加上网上一些文章,希望用常人都可以理解的表达方式.来和大家分享学习经验.
开篇,还是得说说 ^ 和 $ 他们是分别用来匹配字符串的开始和结束,以下分别举例说明
"^The": 开头一定要有"The"字符串;
"of despair$": 结尾一定要有"of despair" 的字符串;
那么,
"^abc$": 就是要求以abc开头和以abc结尾的字符串,实际上是只有abc匹配
"notice": 匹配包含notice的字符串
你可以看见如果你没有用我们提到的两个字符(最后一个例子),就是说 模式(正则表达式) 可以出现在被检验字符串的任何地方,你没有把他锁定到两边
接着,说说 "*", "+",和 "?",
他们用来表示一个字符可以出现的次数或者顺序. 他们分别表示:
"zero or more"相当于{0,},
"one or more"相当于{1,},
"zero or one."相当于{0,1}, 这里是一些例子:
"ab*": 和ab{0,}同义,匹配以a开头,后面可以接0个或者N个b组成的字符串("a", "ab", "abbb", 等);
"ab+": 和ab{1,}同义,同上条一样,但最少要有一个b存在 ("ab", "abbb", 等.);
"ab?":和ab{0,1}同义,可以没有或者只有一个b;
"a?b+$": 匹配以一个或者0个a再加上一个以上的b结尾的字符串.
要点, "*", "+",和 "?"只管它前面那个字符.
你也可以在大括号里面限制字符出现的个数,比如
"ab{2}": 要求a后面一定要跟两个b(一个也不能少)("abb");
"ab{2,}": 要求a后面一定要有两个或者两个以上b(如"abb", "abbbb", 等.);
"ab{3,5}": 要求a后面可以有2-5个b("abbb", "abbbb", or "abbbbb").
现在我们把一定几个字符放到小括号里,比如:
"a(bc)*": 匹配 a 后面跟0个或者一个"bc";
"a(bc){1,5}": 一个到5个 "bc."
还有一个字符 "│", 相当于OR 操作:
"hi│hello": 匹配含有"hi" 或者 "hello" 的 字符串;
"(b│cd)ef": 匹配含有 "bef" 或者 "cdef"的字符串;
"(a│b)*c": 匹配含有这样多个(包括0个)a或b,后面跟一个c
的字符串;
一个点(".")可以代表所有的单一字符,不包括"\n"
如果,要匹配包括"\n"在内的所有单个字符,怎么办?
对了,用"[\n.]"这种模式.
"a.[0-9]": 一个a加一个字符再加一个0到9的数字
"^.{3}$": 三个任意字符结尾 .
中括号括住的内容只匹配一个单一的字符
"[ab]": 匹配单个的 a 或者 b ( 和 "a│b" 一样);
"[a-d]": 匹配"a" 到"d"的单个字符 (和"a│b│c│d" 还有 "[abcd]"效果一样); 一般我们都用[a-zA-Z]来指定字符为一个大小写英文
"^[a-zA-Z]": 匹配以大小写字母开头的字符串
"[0-9]%": 匹配含有 形如 x% 的字符串
",[a-zA-Z0-9]$": 匹配以逗号再加一个数字或字母结尾的字符串
你也可以把你不想要得字符列在中括号里,你只需要在总括号里面使用"^" 作为开头 "%[^a-zA-Z]%" 匹配含有两个百分号里面有一个非字母的字符串.
要点:^用在中括号开头的时候,就表示排除括号里的字符
为了PHP能够解释,你必须在这些字符面前后加"",并且将一些字符转义.
不要忘记在中括号里面的字符是这条规路的例外—在中括号里面, 所有的特殊字符,包括(""), 都将失去他们的特殊性质 "[*\+?{}.]"匹配含有这些字符的字符串.
还有,正如regx的手册告诉我们: "如果列表里含有 "]", 最好把它作为列表里的第一个字符(可能跟在"^"后面). 如果含有"-", 最好把它放在最前面或者最后面, or 或者一个范围的第二个结束点[a-d-0-9]中间的‘-’将有效.
看了上面的例子,你对{n,m}应该理解了吧.要注意的是,n和m都不能为负整数,而且n总是小于m. 这样,才能 最少匹配n次且最多匹配m次. 如"p{1,5}"将匹配 "pvpppppp"中的前五个p
下面说说以\开头的
\b 书上说他是用来匹配一个单词边界,就是...比如"ve\b",可以匹配love里的ve而不匹配very里有ve
\B 正好和上面的\b相反.例子我就不举了
.....突然想起来....可以到http://www.phpv.net/articl... 看看其它用\ 开头的语法
好,我们来做个应用:
如何构建一个模式来匹配 货币数量 的输入
构建一个匹配模式去检查输入的信息是否为一个表示money的数字。我们认为一个表示money的数量有四种方式: "10000.00" 和 "10,000.00",或者没有小数部分, "10000" and "10,000". 现在让我们开始构建这个匹配模式:
^[1-9][0-9]*$
这是所变量必须以非0的数字开头.但这也意味着 单一的 "0" 也不能通过测试. 以下是解决的方法:
^(0│[1-9][0-9]*)$
"只有0和不以0开头的数字与之匹配",我们也可以允许一个负号在数字之前:
^(0│-?[1-9][0-9]*)$
这就是: "0 或者 一个以0开头 且可能 有一个负号在前面的数字." 好了,现在让我们别那么严谨,允许以0开头.现在让我们放弃 负号 , 因为我们在表示钱币的时候并不需要用到. 我们现在指定 模式 用来匹配小数部分:
^[0-9]+(\.[0-9]+)?$
这暗示匹配的字符串必须最少以一个阿拉伯数字开头. 但是注意,在上面模式中 "10." 是不匹配的, 只有 "10" 和 "10.2" 才可以. (你知道为什么吗)
^[0-9]+(\.[0-9]{2})?$
我们上面指定小数点后面必须有两位小数.如果你认为这样太苛刻,你可以改成:
^[0-9]+(\.[0-9]{1,2})?$
这将允许小数点后面有一到两个字符. 现在我们加上用来增加可读性的逗号(每隔三位), 我们可以这样表示:
^[0-9]{1,3}(,[0-9]{3})*(\.[0-9]{1,2})?$
不要忘记 "+" 可以被 "*" 替代 如果你想允许空白字符串被输入话 (为什么?). 也不要忘记反斜杆 ’\’ 在php字符串中可能会出现错误 (很普遍的错误).
现在,我们已经可以确认字符串了, 我们现在把所有逗号都去掉 str_replace(",", "", $money) 然后在把类型看成 double然后我们就可以通过他做数学计算了.
再来一个:
构造检查email的正则表达式
在一个完整的email地址中有三个部分:
1. 用户名 (在 "@" 左边的一切),
2."@",
3. 服务器名(就是剩下那部分).
用户名可以含有大小写字母阿拉伯数字,句号 ("."), 减号("-"), and 下划线 ("_"). 服务器名字也是符合这个规则,当然下划线除外.
现在, 用户名的开始和结束都不能是句点. 服务器也是这样. 还有你不能有两个连续的句点他们之间至少存在一个字符,好现在我们来看一下怎么为用户名写一个匹配模式:
^[_a-zA-Z0-9-]+$
现在还不能允许句号的存在. 我们把它加上:
^[_a-zA-Z0-9-]+(\.[_a-zA-Z0-9-]+)*$
上面的意思就是说: "以至少一个规范字符(除了.)开头,后面跟着0个或者多个以点开始的字符串."
简单化一点, 我们可以用 eregi()取代 ereg().eregi()对大小写不敏感, 我们就不需要指定两个范围 "a-z" 和 "A-Z" – 只需要指定一个就可以了:
^[_a-z0-9-]+(\.[_a-z0-9-]+)*$
后面的服务器名字也是一样,但要去掉下划线:
^[a-z0-9-]+(\.[a-z0-9-]+)*$
好. 现在只需要用”@”把两部分连接:
^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*$
这就是完整的email认证匹配模式了,只需要调用
eregi(‘^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*$ ’,$eamil)
就可以得到是否为email了
正则表达式的其他用法
提取字符串
ereg() and eregi() 有一个特性是允许用户通过正则表达式去提取字符串的一部分(具体用法你可以阅读手册). 比如说,我们想从 path/URL 提取文件名 – 下面的代码就是你需要:
ereg("([^\\/]*)$", $pathOrUrl, $regs);
echo $regs[1];
高级的代换
ereg_replace() 和 eregi_replace()也是非常有用的: 假如我们想把所有的间隔负号都替换成逗号:
ereg_replace("[ \n\r\t]+", ",", trim($str));
最后,我把另一串检查EMAIL的正则表达式让看文章的你来分析一下.
"^[-!#$%&\"*+\\./0-9=?A-Z^_`a-z{|}~]+"."@"."[-!#$%&\"*+\\/0-9=?A-Z^_`a-z{|}~]+\."."[-!#$%&\"*+\\./0-9=?A-Z^_`a-z{|}~]+$"
如果能方便的读懂,那这篇文章的目的就达到了.
引用
大家可以看看以下的例子,就是通过正则表达式验证用户名,
1.代码 /^[a-z0-9]{3,10}$/ 即使验证开头与结尾必须为a-z或0-9,后面的{3,10}是最少三个字符,最多10个字符。
2.代码 form1.user里 form1是表单的名称,同 <form name="form1" 里的名称要一致,user是表单项目与用户名的name一致。
3. alert ("提示:\请输入用户名,只能是字母或数字!"); 如果不符合,弹出提示。
4.最后记着要在form里添加 onSubmit="return checkForm(this)"> 这句以启动验证。
小提示:如果还有更多的项目要验证,可以自行添加。只要将 if } 在复制一个,然后更改验证的文本字段名即可。
<SCRIPT language=javascript>
function checkForm()
{
if (!/^[a-z0-9]{3,10}$/.test(document.form1.user.value)){
alert ("提示:\请输入用户名,只能是字母或数字!");
document.form1.user.focus();
return false;
}
}
//-->
</SCRIPT>
<form name="form1" method="post" action="" onSubmit="return checkForm(this)">
用户名:<input type="text" name="user"> * 字母或数字、3-10个字符。<br><br>
<input type="submit" name="user" value="提交">
</form>
Test方法 正则表达式搜索(vb)
引用
对指定的字符串执行一个正则表达式搜索,并返回一个 Boolean 值指示是否找到匹配的模式。
object.Test(string)
参数
object
必选项。总是一个 RegExp 对象的名称。
string
必选项。要执行正则表达式搜索的文本字符串。
说明
正则表达式搜索的实际模式是通过RegExp对象的Pattern属性来设置的。RegExp.Global属性对Test方法没有影响。
如果找到了匹配的模式,Test方法返回True;否则返回False。
下面的代码说明了Test 方法的用法。
Function RegExpTest(patrn, strng)
Dim regEx, retVal " 建立变量。
Set regEx = New RegExp " 建立正则表达式。
regEx.Pattern = patrn " 设置模式。
regEx.IgnoreCase = False " 设置是否区分大小写。
retVal = regEx.Test(strng) " 执行搜索测试。
If retVal Then
RegExpTest = "找到一个或多个匹配。"
Else
RegExpTest = "未找到匹配。"
End If
End Function
MsgBox(RegExpTest("is.", "IS1 is2 IS3 is4"))
Tags: 正则表达式, js, 正则
网站|PHP学习 | 评论:0
| Trackbacks:0
| 阅读:1091
Submitted by on 2006, October 19, 2:49 AM
今天,抽空去书店了。
忍痛割肉。花了70多大洋换来两本书。《CSS网站布局实录》,《最优化ASP.NET——面向对象开发实践》。
正好,一个前台一个后台。
看得了么?淡水河边这厮问自己。难道看不了就不看了。看得懂的要再仔细看,看不懂的要硬着头皮看。一直都是这样过来的呀?
就样定了吧,php要学,asp.net也要学。不仅要学了,而且要学好了。只要疯狂的学习,一定会有点成绩的。自己太浅薄,在学校里没有学到任何东西。若不是在实习的时候疯狂的学,也许永远和网站设计无缘了。每天晚上都要到12点过了才会考虑睡觉,第二天还得正常的上班。有问题就自己去寻找答案,没有人辅导,没有人指路。还记得第一次用ASP把留言本完整的写出来的时候,那种兴奋又疲惫的状态。那次淡水河边是通宵作战。
为什么现在就不可以呢?“如果你想享受了,你就失败了”吴老前几天刚说过。
SO,要做个疯狂的人。疯狂的学习。
生活|我的生活 | 评论:0
| Trackbacks:0
| 阅读:1115