最新评论
Re:【原创】使用Opera技巧小记 嘉瑜 2011-03-13 00:00
@CNL
我写得好“通俗”了 一 一~
Re:【原创】使用Opera技巧小记 CNL 2011-03-11 14:02
@嘉瑜
认真看可以看懂,通俗点更好,呵呵
Re:【原创】使用Opera技巧小记 嘉瑜 2011-03-10 10:48
@CNL
哪儿有不懂呢?
Re:【原创】使用Opera技巧小记 嘉瑜 2011-03-10 10:48
[quote]CNL:有些地方看不太明白,我理解能力有点差[/quote]
我文笔不好... 哪儿有懂呢?
Re:【原创】使用Opera技巧小记 CNL 2011-03-10 07:28
有些地方看不太明白,我理解能力有点差
Re:读潘正磊访谈录 山是眉峰聚 2011-03-09 12:15
这个放首页干什么?放到读书区呗
Re:读潘正磊访谈录 孔国秋 2011-03-09 10:45
潘正磊,是在给团队一种引导和激励,思维、品质、行为模式的引导。做得非常好。
她激励同事有目标 和正确的思维。
IT部门的同事需要 责任 严谨 上进 协作的精神。
E8.Net团队招聘中,欢迎大家投简历(CJOL) 给大家一个没有天花板的舞台。
E8.Net为快速开发各种管理类项目提供飞跃的起点
(E8.Net) http://www.feifanit.com.cn/productFlow.htm
Re:读潘正磊访谈录 笑铭 2011-03-09 09:20
05年那段是通病啊,现在依然还有很多,不懂管理强说管理,
惩罚,口号,多么悲摧的手段啊
@Csharp Feeds
呕心之作呀~嘻嘻,都是我大爱的站,收藏夹和speed dail因为太满当当,所以还是这么索引起来的好。
我以前也整理过:[url=http://www.cnblogs.com/xugang/archive/2010/09/01/1814770.html]数据库相关知识整理[/url] 希望能有所帮助。
Re:Nice sites Index list #2 Csharp Feeds 2011-03-06 23:17
很好。赞一个。
我越看头越晕,这东西只要悟了,哪需要这么些词来解释,头晕,这篇更全!
http://jibbering.com/faq/notes/closures/
John Resig在他的书中推荐的
Re:SQL小白点滴(一)含”聚合函数“等 Newbie Elaine 2010-04-27 12:32
ALTER PROCEDURE [dbo].[usp_ListGrantedSoftwaresByDocIDStr]
@SWRequestID INT,
@DocumentIDs varchar(max)
AS
SELECT DISTINCT
D.DocumentId,
P.ProductGroupName as ProductCategory,
P.ProductName,
D.DocNumber,
D.DocTitle,
DF.DocFileName,
DT.DocTypeName,
D.IsSoftware,
S.Notes
INTO #TempGrantedSoftwaresByDocIDStr
FROM T_Documents D
INNER JOIN T_ProductDocuments PD ON D.DocumentId = PD.DocumentId
INNER JOIN V_docSAFEProducts P ON PD.ProductId = P.ProductId
INNER JOIN T_SWAttributes S on D.DocumentId = S.DocumentId
INNER JOIN T_DocFiles DF on D.DocFileId = DF.DocFileId
INNER JOIN T_DocTypes DT on D.DocTypeId = DT.DocTypeId
INNER JOIN dbo.T_RequestSWs RS ON RS.DocumentId = d.DocumentId
INNER JOIN dbo.T_SWRequests R ON R.SWRequestId = RS.SWRequestId
WHERE p.Active = 'Y'
AND R.SWRequestId = @SWRequestID
AND RS.SWApprovalStatusId = 4 /*Granted*/
AND CHARINDEX(',' + convert(varchar(max), D.DocumentId) + ',',
',' + @DocumentIDs + ',') > 0
ORDER BY D.DocumentId,
P.ProductName,
P.ProductGroupName,
DF.DocFileName
SELECT *
FROM ( SELECT DocumentId,
DocNumber,
DocTypeName,
DocTitle,
DocFileName,
COUNT(1) AS cnt
FROM #TempGrantedSoftwaresByDocIDStr
GROUP BY DocumentId,
DocNumber,
DocTitle,
DocTypeName,
DocFileName
) AS A
OUTER APPLY ( SELECT ProductCategory = STUFF(REPLACE(( REPLACE(( SELECT ProductCategory
FROM dbo.#TempGrantedSoftwaresByDocIDStr N
WHERE DocumentId = A.DocumentId
FOR
XML AUTO
), '<N ProductCategory="', '<br>') ), '"/>', ''),
1, 4, ''),
ProductName = STUFF(REPLACE(( REPLACE(( SELECT ProductName
FROM dbo.#TempGrantedSoftwaresByDocIDStr N
WHERE DocumentId = A.DocumentId
FOR
XML AUTO
), '<N ProductName="', '<br>') ), '"/>', ''),
1, 4, '')
) N
DROP TABLE #TempGrantedSoftwaresByDocIDStr
Re:SQL小白点滴(一)含”聚合函数“等 Newbie Elaine 2010-04-27 12:31
我知道这个很白,不过也记下来
时间比较:
R.RequestDate <= CONVERT(DATETIME,'4/23/2010', 120 ) and R.RequestDate <= (CONVERT(DATETIME,'4/23/2010', 120 ) + 1)
Re:SQL小白点滴(一)含”聚合函数“等 Newbie Elaine 2010-04-26 13:22
http://qun.qq.com/air/#92521200/bbs/view/cd/2/td/16
合并列值
原著:邹建
改编:爱新觉罗.毓华(十八年风雨,守得冰山雪莲花开) 2007-12-16 广东深圳
表结构,数据如下:
id value
----- ------
1 aa
1 bb
2 aaa
2 bbb
2 ccc
需要得到结果:
id values
------ -----------
1 aa,bb
2 aaa,bbb,ccc
即:group by id, 求 value 的和(字符串相加)
1. 旧的解决方法(在sql server 2000中只能用函数解决。)
--1. 创建处理函数
create table tb(id int, value varchar(10))
insert into tb values(1, 'aa')
insert into tb values(1, 'bb')
insert into tb values(2, 'aaa')
insert into tb values(2, 'bbb')
insert into tb values(2, 'ccc')
go
CREATE FUNCTION dbo.f_str(@id int)
RETURNS varchar(8000)
AS
BEGIN
DECLARE @r varchar(8000)
SET @r = ''
SELECT @r = @r + ',' + value FROM tb WHERE id=@id
RETURN STUFF(@r, 1, 1, '')
END
GO
-- 调用函数
SELECt id, value = dbo.f_str(id) FROM tb GROUP BY id
drop table tb
drop function dbo.f_str
/*
id value
----------- -----------
1 aa,bb
2 aaa,bbb,ccc
(所影响的行数为 2 行)
*/
--2、另外一种函数.
create table tb(id int, value varchar(10))
insert into tb values(1, 'aa')
insert into tb values(1, 'bb')
insert into tb values(2, 'aaa')
insert into tb values(2, 'bbb')
insert into tb values(2, 'ccc')
go
--创建一个合并的函数
create function f_hb(@id int)
returns varchar(8000)
as
begin
declare @str varchar(8000)
set @str = ''
select @str = @str + ',' + cast(value as varchar) from tb where id = @id
set @str = right(@str , len(@str) - 1)
return(@str)
End
go
--调用自定义函数得到结果:
select distinct id ,dbo.f_hb(id) as value from tb
drop table tb
drop function dbo.f_hb
/*
id value
----------- -----------
1 aa,bb
2 aaa,bbb,ccc
(所影响的行数为 2 行)
*/
2. 新的解决方法(在sql server 2005中用OUTER APPLY等解决。)
create table tb(id int, value varchar(10))
insert into tb values(1, 'aa')
insert into tb values(1, 'bb')
insert into tb values(2, 'aaa')
insert into tb values(2, 'bbb')
insert into tb values(2, 'ccc')
go
-- 查询处理
SELECT * FROM(SELECT DISTINCT id FROM tb)A OUTER APPLY(
SELECT [values]= STUFF(REPLACE(REPLACE(
(
SELECT value FROM tb N
WHERE id = A.id
FOR XML AUTO
), ' <N value="', ','), '"/>', ''), 1, 1, '')
)N
drop table tb
/*
id values
----------- -----------
1 aa,bb
2 aaa,bbb,ccc
(2 行受影响)
*/
--SQL2005中的方法2
create table tb(id int, value varchar(10))
insert into tb values(1, 'aa')
insert into tb values(1, 'bb')
insert into tb values(2, 'aaa')
insert into tb values(2, 'bbb')
insert into tb values(2, 'ccc')
go
select id, [values]=stuff((select ','+[value] from tb t where id=tb.id for xml path('')), 1, 1, '')
from tb
group by id
/*
id values
----------- --------------------
1 aa,bb
2 aaa,bbb,ccc
(2 row(s) affected)
*/
drop table tb
Re:jQuery学习笔记 米拉杀回来了 2010-02-11 11:24
http://www.asp.net/learn/
当页面存在 select,而且select里的option很多时,会失效,大家试试,有什么解决方案
请问能不能生成单元测试的框架代码(类似Eclipse)插件,谢谢~~~
re: [收藏] ORACLE中函数 wyj 2008-02-21 10:01
MOD(<n1>,<n2>) 返回n1模n2后的余数。 SELECT MOD(14,5),MOD(8,25),MOD(-64,7) FROM DUAL;
分别返回结果:4,0.5,-1。
结果有错:应该是4,8,-1。
re: 这都是啥呀...大开眼界 Emilly 2007-12-05 16:22
@路过看看不起
我有说可以下载咩..
SX解决ASP.NET安装后无法访问Oracle的问题
SX步骤:
1、(Windows XP版本)以帐户类型为有“计算机管理员”权限的用户登录Windows XP
2、点击任意一个文件夹的菜单中的“工具”→文件夹选项→查看→高级设置→将“使用简单文件共享(推荐)”的勾去掉
3.1、当“安全” 页签下无“Authenticated Users”用户时,在oracle\ora92(oracle9i系列)或Oracle\product(oracle10g系列)下,单击右键“属性”→安全→组或用户名称(G):→点击“添加”→输入“Authenticated”→将“读取和运行”的选择框置为选中状态,并点击“应用”按钮→再将“读取和运行”的选择框置为不选中状态,并点击“应用”按钮→再将“读取和运行”的选择框置为选中状态,并点击“应用”按钮
3.2、当“安全” 页签下有“Authenticated Users”用户时,在oracle\ora92(oracle9i系列)或Oracle\product(oracle10g系列)下,将用户“Authenticated Users”先删除,并点击“应用”按钮,然后再按照步骤3.1搞一遍
4、点击“高级”按钮并在权限项目中确定“Authenticated Users” 是否拥有“读取并运行”权限并应用于“该文件夹,及子文件夹和文件”. 如果不是,双击这样,并确保权限可以“应用于” “该文件夹,及子文件夹和文件”. 该项非常重要你一定要核查
5、重新启动计算机
6、如果在您依次执行了第1、2、3.1/3.2、4、5、步骤后,仍然不能排除此BUG的情况,(本人SX就在oracle10g下遭遇到此问题)那请您借鉴本人SX的做法试一下,现就以oracle10g为例给大家示例:(现在还在用oracle9i的就自己琢磨去)
(此步骤虽然编号为6,但属于步骤3的系列,请大家按1、2、3、4、5的流程走,方能排除此BUG)
SX大法第一步:当“安全” 页签下有“Authenticated Users”用户时,先将Oracle\product\10.1.0\Client_1这四个文件夹,统统按照步骤3.2搞一遍。再把Oracle\product\10.1.0\Client_1\BIN下的这个BIN文件夹按照步骤3.2的变化版搞一遍,变化之处为:将“Authenticated”的“读取和运行”的选择框 改为 将“Authenticated”除最后一项“特别的权限”以外的所有选择框
SX大法第二步:把Oracle\product\10.1.0\Client_1\BIN这五个文件夹,统统执行以下操作:点击“高级”按钮并在“权限项目中”将“Authenticated Users”项的“从父项继承那些可以应用到子对象的权限项目,包括那些在此明确定义的项目”的选择框置为不选中状态
以上步骤为本人SX网罗网络的各周解法,外加自己的亲身遭遇总结的,如果您依据以上步骤还是不能排除此BUG,那就请您高呼阿门,然后顺应上帝的意愿自求多福吧 :-) SX写于2007.11.16
re: 这都是啥呀...大开眼界 路过看看不起 2007-11-06 20:13
没有一个可以下啊~~~
哥们 谢谢你的文章 让我解决了这个问题 最近在用ORACLE 做东西 但是以前没用过 尤其是对存储过程的调用 老是出现错误 终于明白原来给参数赋值是不可以用NULL的 害我被折磨了一天!!!谢谢啊
re: 这都是啥呀...大开眼界 请问哪有这个下载 2007-09-28 09:20
请问哪有这个下载
相关资源 Emilly 2007-09-04 17:23
这书- -! 有个朋友推给我的,可我看到第七章就看不下去了,如果你是在用SQL server做项目的,或想自己做项目,这个还行,适合小型的,我个人觉得这书不咋地...
2005里面有个 App_Browsers 目录 可以解决的。。。
hoho~~~
re: 这都是啥呀...大开眼界 ddd 2007-08-17 19:47
very good
re: 如何用c#获得当前站点的根路径 Emilly 2007-07-25 19:50
thx a lot
Dim strUrl As String = HttpContext.Current.Request.UrlReferrer.AbsoluteUri
Dim folderName As String = HttpContext.Current.Request.ApplicationPath
Dim vRoot As String = strUrl.Substring(0, strUrl.IndexOf(folderName) + folderName.Length + 1)
如大家要转载,请保留本人的版权:
/*
*Description:asp.NET自定义服务器控件内部细节系列教程
*Auther:崇崇-天真的好蓝
*MSN:chongchong2008@msn.com
*Dates:2007-05-20
*Copyright:ChongChong2008 YiChang HuBei China
*/
[中国站长站]
关于自定义asp.NET自定义服务器控件文章和源码示例网上已经很多了,不过有些内部些节方面,让一些初次接触这方面技术的朋友难以理解,对服务器控件的方方面面也很疑惑。为此,我抽出些时间把自己所理解的东西整理出来,方便大家交流学习。 [中国站长站]
一 理解事件委托,事件,引发事件以及事件优化 [中国站长站]
.NET框架的事件委托和事件数据的命名约定:
事件数据类由事件名加后缀EventArgs构成,如:SXLoginEventArgs
事件委托由事件名加后缀EventHandler构成,如:SXLoginEventHandler
引发事件的方法名字是在事件前加上前缀On,OnSXLogin Chinaz.com
1。事件委托 Chinaz.com
委托其实是一个类,委托具有函数指针的粒度和接口的安全性,为什么这样说,是因为委托就是安全类型的函数指针,用来回调方法,方法的签名必须和委托的签名相匹配。
Chinaz.com
下面我们看看委托的声名:
public delegate void SXLoginEventHandler(object sender,SXLoginEventArgs e);
[中国站长站]
上面的定义表示定义了一个SXLoginEventHandler的事件委托,返回类型是void,并分别接受一个object和SXLoginEventArgs类型的参数。object表示事件的发送者,e表示描述事件的数据。
Chinaz.com
可以看出事件委托的声名和类的声名是类似的,只需增加关键字delegate即可。 Chinaz.com
委托间接派生于System.Delegate,直接派生于System.MulticastDelegate。 [中国站长站]
2。事件
Chinaz.com
事件是当有动作发生或状态改变时,类发出的信息或通知。
Chinaz.com
下面我们看看事件的声名:
public event SXLoginEventHandler SXLogin ;可以看出事件是与一个委托相关联的。 [中国站长站]
3。引发事件 Chinaz.com
为了在类中实现事件,需要一个事件数据类,事件委托以及一个发布事件通知的方法。我们需要把这些组合在一起,下面给一个例子:
3.1 如果类没有任何关联的事件数据,就直接使用EventArgs类,或其它已存在的事件数据类,必须匹配。否则,需要定义一个事件数据类,这个类必须从System.EventArgs中派生,如下:
public class SXLoginEventArgs:EventArgs{...}
Chinaz.com
3.2 如果事件没有关联的数据,就直接使用System.EventHandler作为事件委托,否则,需要定一个事件委托,如下:
public delegate void SXLoginEventHandler(object sender , SXLoginEventArgs e ); Chinaz.com
3.3 用event关键字定义事件成员,后面紧跟与此对应的事件委托,如下:
public event SXLoginEventHandler SXLogin ;
3.4 在类中定义一个虚方法调用事件委托,方法的名字是在事件前加上前缀On,如下:
protected virtual void OnSXLogin(SXLoginEventArgs e)
{
if(SXLogin != null)
{
SXLogin(this , e);
}
} Chinaz.com
4。事件优化
[中国站长站]
如果一个类中引发了多个事件,通过为每一个事件声名一个事件字段成员来执行时低效的,为此我们换一种方法用属性来定义事件。 Chinaz.com
.NET框架有一个System.ComponentModel.EventHanlderList类,这个类是一个优化了的委托存储和取回的链表。下面来看看优化事件模式是如何实现的: [中国站长站]
private EventHanlderList events ;
protected EventHanlderList Events
{
get
{
if(events==null)
{
events = new EventHanlderList();
}
return events;
}
} [中国站长站]
protected static readonly object SXLoginEventObject = new object(); Chinaz.com
我们用属性而不是字段来定义事件,如下:
public event SXLoginEventHandler SXLogin
{
add{Events.AddHandler(SXLoginEventObject,value)};
remove{Events.RemoveHandler(SXLoginEventObject,value)};
}
re: 这都是啥呀...大开眼界 浓浓的咖啡猫 2007-06-15 16:27
请问哪有这个下载:
Developer Express.NET WindowsForms Component Collection v2.0.6 VS.NET2005 注册机
谢谢!
re: 常用正则表达式 孤剑 2007-06-09 22:33
哈哈哈,好东西,刚刚要用到,现在找到了
re: 常用正则表达式 Emilly 2007-05-14 11:30
re: 常用正则表达式 Emilly 2007-05-14 11:29
正则表达式
是由普通字符(例如字符 a 到 z)以及特殊字符(称为元字符)组成的文字模式。正则表达式作为一个模板,将某个字符模式与所搜索的字符串进行匹配。
可以通过在一对分隔符之间放入表达式模式的各种组件来构造一个正则表达式,即/expression/
普通字符
由所有那些未显式指定为元字符的打印和非打印字符组成。这包括所有的大写和小写字母字符,所有数字,所有标点符号以及一些符号。
非打印字符
字符 含义
\cx 匹配由x指明的控制字符。例如, \cM 匹配一个 Control-M 或回车符。x 的值必须为 A-Z 或 a-z 之一。否则,将 c 视为一个原义的 'c' 字符。
\f 匹配一个换页符。等价于 \x0c 和 \cL。
\n 匹配一个换行符。等价于 \x0a 和 \cJ。
\r 匹配一个回车符。等价于 \x0d 和 \cM。
\s 匹配任何空白字符,包括空格、制表符、换页符等等。等价于 [ \f\n\r\t\v]。
\S 匹配任何非空白字符。等价于 [^ \f\n\r\t\v]。
\t 匹配一个制表符。等价于 \x09 和 \cI。
\v 匹配一个垂直制表符。等价于 \x0b 和 \cK。
特殊字符
所谓特殊字符,就是一些有特殊含义的字符,如上面说的"*.txt"中的*,简单的说就是表示任何字符串的意思。如果要查找文件名中有*的文件,则需要对*进行转义,即在其前加一个\。ls \*.txt。正则表达式有以下特殊字符。
特别字符 说明
$ 匹配输入字符串的结尾位置。如果设置了 RegExp 对象的 Multiline 属性,则 $ 也匹配 '\n' 或 '\r'。要匹配 $ 字符本身,请使用 \$。
( ) 标记一个子表达式的开始和结束位置。子表达式可以获取供以后使用。要匹配这些字符,请使用 \( 和 \)。
* 匹配前面的子表达式零次或多次。要匹配 * 字符,请使用 \*。
+ 匹配前面的子表达式一次或多次。要匹配 + 字符,请使用 \+。
. 匹配除换行符 \n之外的任何单字符。要匹配 .,请使用 \。
[ 标记一个中括号表达式的开始。要匹配 [,请使用 \[。
? 匹配前面的子表达式零次或一次,或指明一个非贪婪限定符。要匹配 ? 字符,请使用 \?。
\ 将下一个字符标记为或特殊字符、或原义字符、或向后引用、或八进制转义符。例如, 'n' 匹配字符 'n'。'\n' 匹配换行符。序列 '\\' 匹配 "\",而 '\(' 则匹配 "("。
^ 匹配输入字符串的开始位置,除非在方括号表达式中使用,此时它表示不接受该字符集合。要匹配 ^ 字符本身,请使用 \^。
{ 标记限定符表达式的开始。要匹配 {,请使用 \{。
| 指明两项之间的一个选择。要匹配 |,请使用 \|。
构造正则表达式的方法和创建数学表达式的方法一样。也就是用多种元字符与操作符将小的表达式结合在一起来创建更大的表达式。正则表达式的组件可以是单个的字符、字符集合、字符范围、字符间的选择或者所有这些组件的任意组合。
限定符
限定符用来指定正则表达式的一个给定组件必须要出现多少次才能满足匹配。有*或+或?或{n}或{n,}或{n,m}共6种。
*、+和?限定符都是贪婪的,因为它们会尽可能多的匹配文字,只有在它们的后面加上一个?就可以实现非贪婪或最小匹配。
正则表达式的限定符有:
字符 描述
* 匹配前面的子表达式零次或多次。例如,zo* 能匹配 "z" 以及 "zoo"。* 等价于{0,}。
+ 匹配前面的子表达式一次或多次。例如,'zo+' 能匹配 "zo" 以及 "zoo",但不能匹配 "z"。+ 等价于 {1,}。
? 匹配前面的子表达式零次或一次。例如,"do(es)?" 可以匹配 "do" 或 "does" 中的"do" 。? 等价于 {0,1}。
{n} n 是一个非负整数。匹配确定的 n 次。例如,'o{2}' 不能匹配 "Bob" 中的 'o',但是能匹配 "food" 中的两个 o。
{n,} n 是一个非负整数。至少匹配n 次。例如,'o{2,}' 不能匹配 "Bob" 中的 'o',但能匹配 "foooood" 中的所有 o。'o{1,}' 等价于 'o+'。'o{0,}' 则等价于 'o*'。
{n,m} m 和 n 均为非负整数,其中n <= m。最少匹配 n 次且最多匹配 m 次。例如,"o{1,3}" 将匹配 "fooooood" 中的前三个 o。'o{0,1}' 等价于 'o?'。请注意在逗号和两个数之间不能有空格。
定位符
用来描述字符串或单词的边界,^和$分别指字符串的开始与结束,\b描述单词的前或后边界,\B表示非单词边界。不能对定位符使用限定符。
选择
用圆括号将所有选择项括起来,相邻的选择项之间用|分隔。但用圆括号会有一个副作用,是相关的匹配会被缓存,此时可用?:放在第一个选项前来消除这种副作用。
其中?:是非捕获元之一,还有两个非捕获元是?=和?!,这两个还有更多的含义,前者为正向预查,在任何开始匹配圆括号内的正则表达式模式的位置来匹配搜索字符串,后者为负向预查,在任何开始不匹配该正则表达式模式的位置来匹配搜索字符串。
后向引用
对一个正则表达式模式或部分模式两边添加圆括号将导致相关匹配存储到一个临时缓冲区中,所捕获的每个子匹配都按照在正则表达式模式中从左至右所遇到的内容存储。存储子匹配的缓冲区编号从 1 开始,连续编号直至最大 99 个子表达式。每个缓冲区都可以使用 '\n' 访问,其中 n 为一个标识特定缓冲区的一位或两位十进制数。
可以使用非捕获元字符 '?:', '?=', or '?!' 来忽略对相关匹配的保存。
各种操作符的运算优先级
相同优先级的从左到右进行运算,不同优先级的运算先高后低。各种操作符的优先级从高到低如下:
操作符 描述
\ 转义符
(), (?:), (?=), [] 圆括号和方括号
*, +, ?, {n}, {n,}, {n,m} 限定符
^, $, \anymetacharacter 位置和顺序
| “或”操作
全部符号解释
字符 描述
\ 将下一个字符标记为一个特殊字符、或一个原义字符、或一个 向后引用、或一个八进制转义符。例如,'n' 匹配字符 "n"。'\n' 匹配一个换行符。序列 '\\' 匹配 "\" 而 "\(" 则匹配 "("。
^ 匹配输入字符串的开始位置。如果设置了 RegExp 对象的 Multiline 属性,^ 也匹配 '\n' 或 '\r' 之后的位置。
$ 匹配输入字符串的结束位置。如果设置了RegExp 对象的 Multiline 属性,$ 也匹配 '\n' 或 '\r' 之前的位置。
* 匹配前面的子表达式零次或多次。例如,zo* 能匹配 "z" 以及 "zoo"。* 等价于{0,}。
+ 匹配前面的子表达式一次或多次。例如,'zo+' 能匹配 "zo" 以及 "zoo",但不能匹配 "z"。+ 等价于 {1,}。
? 匹配前面的子表达式零次或一次。例如,"do(es)?" 可以匹配 "do" 或 "does" 中的"do" 。? 等价于 {0,1}。
{n} n 是一个非负整数。匹配确定的 n 次。例如,'o{2}' 不能匹配 "Bob" 中的 'o',但是能匹配 "food" 中的两个 o。
{n,} n 是一个非负整数。至少匹配n 次。例如,'o{2,}' 不能匹配 "Bob" 中的 'o',但能匹配 "foooood" 中的所有 o。'o{1,}' 等价于 'o+'。'o{0,}' 则等价于 'o*'。
{n,m} m 和 n 均为非负整数,其中n <= m。最少匹配 n 次且最多匹配 m 次。例如,"o{1,3}" 将匹配 "fooooood" 中的前三个 o。'o{0,1}' 等价于 'o?'。请注意在逗号和两个数之间不能有空格。
? 当该字符紧跟在任何一个其他限制符 (*, +, ?, {n}, {n,}, {n,m}) 后面时,匹配模式是非贪婪的。非贪婪模式尽可能少的匹配所搜索的字符串,而默认的贪婪模式则尽可能多的匹配所搜索的字符串。例如,对于字符串 "oooo",'o+?' 将匹配单个 "o",而 'o+' 将匹配所有 'o'。
. 匹配除 "\n" 之外的任何单个字符。要匹配包括 '\n' 在内的任何字符,请使用象 '[.\n]' 的模式。
(pattern) 匹配 pattern 并获取这一匹配。所获取的匹配可以从产生的 Matches 集合得到,在VBScript 中使用 SubMatches 集合,在JScript 中则使用 $0…$9 属性。要匹配圆括号字符,请使用 '\(' 或 '\)'。
(?:pattern) 匹配 pattern 但不获取匹配结果,也就是说这是一个非获取匹配,不进行存储供以后使用。这在使用 "或" 字符 (|) 来组合一个模式的各个部分是很有用。例如, 'industr(?:y|ies) 就是一个比 'industry|industries' 更简略的表达式。
(?=pattern) 正向预查,在任何匹配 pattern 的字符串开始处匹配查找字符串。这是一个非获取匹配,也就是说,该匹配不需要获取供以后使用。例如,'Windows (?=95|98|NT|2000)' 能匹配 "Windows 2000" 中的 "Windows" ,但不能匹配 "Windows 3.1" 中的 "Windows"。预查不消耗字符,也就是说,在一个匹配发生后,在最后一次匹配之后立即开始下一次匹配的搜索,而不是从包含预查的字符之后开始。
(?!pattern) 负向预查,在任何不匹配 pattern 的字符串开始处匹配查找字符串。这是一个非获取匹配,也就是说,该匹配不需要获取供以后使用。例如'Windows (?!95|98|NT|2000)' 能匹配 "Windows 3.1" 中的 "Windows",但不能匹配 "Windows 2000" 中的 "Windows"。预查不消耗字符,也就是说,在一个匹配发生后,在最后一次匹配之后立即开始下一次匹配的搜索,而不是从包含预查的字符之后开始
x|y 匹配 x 或 y。例如,'z|food' 能匹配 "z" 或 "food"。'(z|f)ood' 则匹配 "zood" 或 "food"。
[xyz] 字符集合。匹配所包含的任意一个字符。例如, '[abc]' 可以匹配 "plain" 中的 'a'。
[^xyz] 负值字符集合。匹配未包含的任意字符。例如, '[^abc]' 可以匹配 "plain" 中的'p'。
[a-z] 字符范围。匹配指定范围内的任意字符。例如,'[a-z]' 可以匹配 'a' 到 'z' 范围内的任意小写字母字符。
[^a-z] 负值字符范围。匹配任何不在指定范围内的任意字符。例如,'[^a-z]' 可以匹配任何不在 'a' 到 'z' 范围内的任意字符。
\b 匹配一个单词边界,也就是指单词和空格间的位置。例如, 'er\b' 可以匹配"never" 中的 'er',但不能匹配 "verb" 中的 'er'。
\B 匹配非单词边界。'er\B' 能匹配 "verb" 中的 'er',但不能匹配 "never" 中的 'er'。
\cx 匹配由 x 指明的控制字符。例如, \cM 匹配一个 Control-M 或回车符。x 的值必须为 A-Z 或 a-z 之一。否则,将 c 视为一个原义的 'c' 字符。
\d 匹配一个数字字符。等价于 [0-9]。
\D 匹配一个非数字字符。等价于 [^0-9]。
\f 匹配一个换页符。等价于 \x0c 和 \cL。
\n 匹配一个换行符。等价于 \x0a 和 \cJ。
\r 匹配一个回车符。等价于 \x0d 和 \cM。
\s 匹配任何空白字符,包括空格、制表符、换页符等等。等价于 [ \f\n\r\t\v]。
\S 匹配任何非空白字符。等价于 [^ \f\n\r\t\v]。
\t 匹配一个制表符。等价于 \x09 和 \cI。
\v 匹配一个垂直制表符。等价于 \x0b 和 \cK。
\w 匹配包括下划线的任何单词字符。等价于'[A-Za-z0-9_]'。
\W 匹配任何非单词字符。等价于 '[^A-Za-z0-9_]'。
\xn 匹配 n,其中 n 为十六进制转义值。十六进制转义值必须为确定的两个数字长。例如,'\x41' 匹配 "A"。'\x041' 则等价于 '\x04' & "1"。正则表达式中可以使用 ASCII 编码。.
\num 匹配 num,其中 num 是一个正整数。对所获取的匹配的引用。例如,'(.)\1' 匹配两个连续的相同字符。
\n 标识一个八进制转义值或一个向后引用。如果 \n 之前至少 n 个获取的子表达式,则 n 为向后引用。否则,如果 n 为八进制数字 (0-7),则 n 为一个八进制转义值。
\nm 标识一个八进制转义值或一个向后引用。如果 \nm 之前至少有 nm 个获得子表达式,则 nm 为向后引用。如果 \nm 之前至少有 n 个获取,则 n 为一个后跟文字 m 的向后引用。如果前面的条件都不满足,若 n 和 m 均为八进制数字 (0-7),则 \nm 将匹配八进制转义值 nm。
\nml 如果 n 为八进制数字 (0-3),且 m 和 l 均为八进制数字 (0-7),则匹配八进制转义值 nml。
\un 匹配 n,其中 n 是一个用四个十六进制数字表示的 Unicode 字符。例如, \u00A9 匹配版权符号 (?)。
VBScript内的使用方法:
function gfCheck(obj)
dim strCheck '待检字符串
dim objRE '正则式对象
dim strRtn '正则式判断结果
strCheck = obj.value
set objRE = New RegExp
objRE.Pattern = "^[A-Za-z0-9]{13}$" '13位的英文字符和数字串
gfCheck = objRE.Test(strCheck) '符合正则式则返回true,反之则返回false
set objRE = nothing
end function
常用的正则式
1、非负整数:”^\d+$”
2、正整数:”^[0-9]*[1-9][0-9]*$”
3、非正整数:”^((-\d+)|(0+))$”
4、负整数:”^-[0-9]*[1-9][0-9]*$”
5、整数:”^-?\d+$”
6、非负浮点数:”^\d+(\.\d+)?$”
7、正浮点数:”^((0-9)+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$”
8、非正浮点数:”^((-\d+\.\d+)?)|(0+(\.0+)?))$”
9、负浮点数:”^(-((正浮点数正则式)))$”
10、英文字符串:”^[A-Za-z]+$”
11、英文大写串:”^[A-Z]+$”
12、英文小写串:”^[a-z]+$”
13、英文字符数字串:”^[A-Za-z0-9]+$”
14、英数字加下划线串:”^\w+$”
15、E-mail地址:”^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$”
16、URL:”^[a-zA-Z]+://(\w+(-\w+)*)(\.(\w+(-\w+)*))*(\?\s*)?$”
re: 这都是啥呀...大开眼界 zhangsheng 2007-05-09 10:00
~
re: JSCRIPT如何调试 Emilly 2007-04-17 11:53
-_-~说了不要进来嘛