选取正则表明式,mssql使用总计

作者: 韦德国际1946国际网址  发布:2019-05-30

那二日有个供给,供给在数据库中决断字符串的格式,于是从网络采撷了部分材料,整理了刹那间。

SQL Server

OC正则表明式的应用,OC正则表明式使用

OC中一般正则表明式的选用方式为二步

一.开立二个正则表明式对象

二.使用正则表达式来测试对应的字符串

例如

    NSString *checkString = @"a34sd231";
    //1.创建正则表达式,[0-9]:表示‘0’到‘9’的字符的集合
    NSString *pattern = @"[0-9]";
    //1.1将正则表达式设置为OC规则
    NSRegularExpression *regular = [[NSRegularExpression alloc] initWithPattern:pattern options:NSRegularExpressionCaseInsensitive error:nil];
    //2.利用规则测试字符串获取匹配结果
    NSArray *results = [regular matchesInString:checkString options:0 range:NSMakeRange(0, checkString.length)];
    NSLog(@"%ld",results.count);

赢得打字与印刷结果,从checkString上解析为数字的字符有伍

从而能够得出多少个定论,正则表达式的机能正是把多可字符串杂糅到三个表明式中

到此地就能够大概知道正则表明式的含义了,接下去介绍部分常用的正则表明式字符

/*
 []:找到内部的某一个字符
 [a-zA-Z0-9]  ===> 代表字符或数字
 \d  ====>代表数字
 {2}:代表有2个
 {2,4}:代表有2到4个
 // ?   * ^ $ .
 ?: 代表0或1个
  : 代表至少1个
 *: 代表0个或多个
 ^: 代表以...开头
 $: 代表以...结束
 .: 代表除换行符以外的任意字符
 */
//代表一个数字字符
NSString *pattern = @"\d";
//代表2到5个连续的数字
NSString *pattern = @"\d{2,5}";
//qq账号的正则表达式
NSString *pattern = @"^[1-9]\d{4,10}";
//电话号码格式的正则表达式
NSString *pattern = @"^((13[0-9])|(15[3-5])|(18[07-9]))\d{8}$"
//邮箱的正则表达式
NSString *pattern [email protected]"^.*@.. \.[a-zA-Z]{2,4}$"

如此根据须要的相称规则来设定正则表明式就足以推断字符串是不是为契合项目

若有三个长串字符串将在对内部部分开展表情、url、@(呼叫)或#话题# 的合作推断

则必要多少个正则表明式来实行决断

//需要被筛选的字符串
NSString *str = @"#今日要闻#[偷笑] http://asd.fdfs.2ee/aas/1e @sdf[test] #你确定#@rain李23: @张三[挖鼻屎]m123m";
    //表情正则表达式
    //  \u4e00-\u9fa5 代表unicode字符
    NSString *emopattern = @"\[[a-zA-Z\u4e00-\u9fa5] \]";
    //@正则表达式
    NSString *atpattern = @"@[0-9a-zA-Z\u4e00-\u9fa5] ";
    //#...#正则表达式
    NSString *toppattern = @"#[0-9a-zA-Z\u4e00-\u9fa5] #";
    //url正则表达式
    NSString *urlpattern = @"\b(([\w-] ://?|www[.])[^\s()<>] (?:\([\w\d] \)|([^[:punct:]\s]|/)))";
    //设定总的正则表达式
    NSString *pattern = [NSString stringWithFormat:@"%@|%@|%@|%@",emopattern,atpattern,toppattern,urlpattern];
    //根据正则表达式设定OC规则
    NSRegularExpression *regular = [[NSRegularExpression alloc] initWithPattern:pattern options:NSRegularExpressionCaseInsensitive error:nil];
    //获取匹配结果
    NSArray *results = [regular matchesInString:str options:0 range:NSMakeRange(0, str.length)];
    //NSLog(@"%@",results);
    //遍历结果
    for (NSTextCheckingResult *result in results) {
        NSLog(@"%@ %@",NSStringFromRange(result.range),[str substringWithRange:result.range]);
    }

获得结果

图片 1

有了上边的示范就能够差不离写出类别方法运用的正则表明式了

OC中貌似正则表明式的使用形式为二步 1.开立2个正则表明式对象 2.行使正则表明式来测试对应的字...

选用正则表达式

Posted on 二零零七-08-3一 0九:40 欢愉天天 阅读(3930) 商议(1)  编辑 收藏

关键字:正则表达式  形式匹配 Javascript

摘要:收罗一些常用的正则表明式。

正则表明式用于字符串管理,表单验证等场地,实用高效,但用到时总是不太把握,以至往往要上网查壹番。笔者将1部分常用的表明式收藏在此地,作备忘之用。本贴随时会更新。

协作中文字符的正则表明式: [u4e00-u9fa5]

合作双字节字符(包涵汉字在内):[^x00-xff]

动用:总计字符串的长度(一个双字节字符长度计二,ASCII字符计一)

String.prototype.len=function(){return this.replace([^x00-xff]/g,"aa").length;}

特别空行的正则表明式:n[s| ]*r

匹配HTML标志的正则表明式:/<(.*)>.*</1>|<(.*) />/

协作首尾空格的正则表明式:(^s*)|(s*$)

应用:javascript中未有像vbscript那样的trim函数,大家就可以利用那个表明式来兑现,如下:

String.prototype.trim = function()
{
    return this.replace(/(^s*)|(s*$)/g, "");
}

行使正则表明式分解和更动IP地址:

下边是使用正则表达式相称IP地址,并将IP地址转变到对应数值的Javascript程序:

function IP2V(ip)
{
 re=/(d ).(d ).(d ).(d )/g  //相配IP地址的正则表明式
if(re.test(ip))
{
return RegExp.$1*Math.pow(255,3)) RegExp.$2*Math.pow(255,2)) RegExp.$3*255 RegExp.$4*1
}
else
{
 throw new Error("Not a valid IP address!")
}
}

而是上边的程序1旦不用正则表明式,而直接用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 )*

格外网站URubiconL的正则表明式: ./?%&=]*)?

利用正则表达式去除字串中重复的字符的算法程序:[注:此程序不得法,原因见本贴回复]

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

自个儿原先在CSDN上发贴寻求贰个表达式来兑现去除重复字符的法子,最终并未有找到,那是自己能想到的最简便易行的贯彻格局。思路是利用后向引用收取包蕴重复的字符,再以重复的字符创立第二个表明式,取到不重复的字符,两者串连。那么些法子对于字符顺序有须求的字符串恐怕不适用。

得用正则表达式从U帕杰罗L地址中领到文件名的javascript程序,如下结果为page壹

s=""
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,''))"

 

正则表明式,相关链接

微软的正则表明式教程(5):采纳/编组和后向引用

微软的正则表明式教程(四):限定符和固化符

微软的正则表明式教程(三):字符相称

微软的正则表明式教程(二):正则表明式语法和优先权顺序

微软的正则表明式教程(一):正则表达式简单介绍

小程序大作为:高等搜索/替换、正则表明式演练器、Javascript脚本程序调节和测试器

特出正则表明式

正则表明式,正规表达式,正则表明式相称,正则表明式语法,格局相称,正规表达式匹配javascript正则表明式 ASP正则表明式 ASP.NET正则表达式 C#正则表明式 JSP正则表明式 PHP正则表明式 VB.NET正则表明式 VBSCript正则表明式编程delphi正则表达式 jscript

上边这一个是一个自定义函数,用户能够调用那些函数判别钦定的字符串是还是不是适合正则表达式的规则.
CREATE FUNCTION dbo.find_regular_expression
 (
  @source varchar(6000),   --供给相称的源字符串
  @regexp varchar(一千),  --正则表达式
  @ignorecase bit = 0  --是还是不是区分轻重缓急写,默以为false
 )
RETU奇骏NS bit  --再次回到结果0-false,一-true
AS
 BEGIN

宗旨数据类型:

 

正则表明式 regular expression
正则表达式 RegExp
模式 pattern
匹配 Match
.NET命名空间: System.Text.RegularExpression

 --0(成功)或非零数字(失利),是由 OLE 自动化对象回来的 HRESULT 的整数值。
  DECLARE @hr integer 

图片 2

 

补充:
^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] $  //相称由二两个英文字母组成的字符串
^[A-Z] $  //相称由贰陆个英文字母的大写组成的字符串
^[a-z] $  //相称由二伍个英文字母的小写组成的字符串
^[A-Za-z0-9] $  //相称由数字和贰三个英文字母组成的字符串
^w $  //相称由数字、二四个英文字母也许下划线组成的字符串
^[w-] (.[w-] )*@[w-] (.[w-] ) $    //匹配email地址
^[a-zA-z] ://匹配(w (-w )*)(.(w (-w )*))*(?S*)?$  //匹配url

--用于保存重返的靶子令牌,以便之后对该对象进行操作
  DECLARE @objRegExp integer   DECLARE @objMatches integer

1.1 简介

 

利用正则表达式去除字串中再一次的字符的算法程序:

var s="abacabefgeeii"
var s1=s.replace(/(.).*1/g,"$1")
var re=new RegExp("[" s1 "]","g")
var s2=s.replace(re,"")

--保存结果
  DECLARE @results bit
  
/*
创办 OLE 对象实例,只有 sysadmin 固定服务器角色的积极分子技术实行sp_OACreate,并规定机器中有VBScript.RegExp类库
*/
  EXEC @hr = sp_OACreate 'VBScript.RegExp', @objRegExp OUTPUT
  IF @hr <> 0 BEGIN
   SET @results = 0
   RETURN @results
  END
/*
选取正则表明式,mssql使用总计。以下八个分级是安装新建对象的多少个性情。下边是'VBScript.RegExp'中常用的性情举个例子:
    Dim regEx,Match,Matches         '建立变量。
    Set regEx = New RegExp         '建构一般表达式。
    regEx.Pattern= patrn         '设置格局。
    regEx.IgnoreCase = True         '设置是不是区分轻重缓急写。
    regEx.Global=True                             '设置全局可用性。
    set Matches=regEx.Execute(string)             '重复相配集结
    RegExpTest = regEx.Execute(strng)      '实行找寻。
   for each match in matches                    '重复相配集合
   RetStr=RetStr &"Match found at position "
   RetStr=RetStr&Match.FirstIndex&".Match Value is '"
   RetStr=RetStr&Match.Value&"'."&vbCRLF Next
   RegExpTest=RetStr

1.1.1 SQL分类

alert(s1 s2) //结果为:abcefgi

如果var s = "abacabefggeeii"
结果就窘迫了,结果为:abeicfgg
正则表明式的工草芙蓉易

*/
  EXEC @hr = sp_OASetProperty @objRegExp, 'Pattern', @regexp
  IF @hr <> 0 BEGIN
   SET @results = 0
   RETURN @results
  END
  EXEC @hr = sp_OASetProperty @objRegExp, 'Global', false
  IF @hr <> 0 BEGIN
   SET @results = 0
   RETURN @results
  END
  EXEC @hr = sp_OASetProperty @objRegExp, 'IgnoreCase', @ignorecase
  IF @hr <> 0 BEGIN
   SET @results = 0
   RETURN @results
  END 
--调用对象方法
  EXEC @hr = sp_OAMethod @objRegExp, 'Test', @results OUTPUT, @source
  IF @hr <> 0 BEGIN
   SET @results = 0
   RETURN @results
  END
--释放已创建的 OLE 对象
  EXEC @hr = sp_OADestroy @objRegExp
  IF @hr <> 0 BEGIN
   SET @results = 0
   RETURN @results
  END
 RETURN @results
 END

l         DDL(Data Define Language):数据定义语言:

 

1.肯定有效电子邮件格式
上边包车型地铁代码示例使用静态 Regex.IsMatch 方法求证多少个字符串是不是为使得电子邮件格式。如若字符串包括3个可行的电子邮件地址,则 IsValidEmail 方法再次回到 true,不然重返false,但不选用任何任何操作。您可以运用 IsValidEmail,在应用程序将地方存款和储蓄在数据库中或映未来 ASP.NET 页中在此之前,筛选出含有无效字符的电子邮件地址。

[Visual Basic]
Function IsValidEmail(strIn As String) As Boolean
' Return true if strIn is in valid e-mail format.
Return Regex.IsMatch(strIn, ("^([w-.] )@(([[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.)|(([w-] .) ))([a-zA-Z]{2,4}|[0-9]{1,3})(]?)$")
End Function
[C#]
bool IsValidEmail(string strIn)
{
// Return true if strIn is in valid e-mail format.
return Regex.IsMatch(strIn, @"^([w-.] )@(([[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.)|(([w-] .) ))([a-zA-Z]{2,4}|[0-9]{1,3})(]?)$");
}

二.清理输入字符串
上面包车型客车代码示例使用静态 Regex.Replace 方法从字符串中腾出无效字符。您能够使用这里定义的 CleanInput 方法,清除掉在收受用户输入的窗体的文本字段中输入的或然伤害的字符。CleanInput 在破除掉除 @、-(连字符)和 .(句点)以外的具备非字母数字字符后赶回八个字符串。

[Visual Basic]
Function CleanInput(strIn As String) As String
' Replace invalid characters with empty strings.
Return Regex.Replace(strIn, "[^w.@-]", "")
End Function
[C#]
String CleanInput(string strIn)
{
// Replace invalid characters with empty strings.
return Regex.Replace(strIn, @"[^w.@-]", "");
}

三.改动日期格式
以下代码示例使用 Regex.Replace 方法来用 dd-mm-yy 的日期情势代替 mm/dd/yy 的日期形式。

[Visual Basic]
Function MDYToDMY(input As String) As String
Return Regex.Replace(input, _
"b(?<month>d{1,2})/(?<day>d{1,2})/(?<year>d{2,4})b", _
"${day}-${month}-${year}")
End Function
[C#]
String MDYToDMY(String input)
{
return Regex.Replace(input,
"\b(?<month>\d{1,2})/(?<day>\d{1,2})/(?<year>\d{2,4})\b",
"${day}-${month}-${year}");
}
Regex 替换形式
本示例表达什么在 Regex.Replace 的轮换形式中使用命名的反向引用。在那之中,替换表达式 ${day} 插入由 (?<day>...) 组捕获的子字符串。

有二种静态函数使您能够在选择正则表达式操作时不须求成立显式正则表明式对象,而 Regex.Replace 函数正是个中之①。假使您不想保留编写翻译的正则表明式,那将给你带来便利

4.提取 URL 信息
以下代码示例使用 Match.Result 来从 U哈弗L 提取协构和端口号。譬如,“

[Visual Basic]
Function Extension(url As String) As String
Dim r As New Regex("^(?<proto>w )://[^/] ?(?<port>:d )?/", _
RegexOptions.Compiled)
Return r.Match(url).Result("${proto}${port}")
End Function
[C#]
String Extension(String url)
{
Regex r = new Regex(@"^(?<proto>w )://[^/] ?(?<port>:d )?/",
RegexOptions.Compiled);
return r.Match(url).Result("${proto}${port}");
}

 

  1、正则表明式基础知识
  大家先从轻便的伊始。假如你要探寻三个带有字符“cat”的字符串,寻找用的正则表明式便是“cat”。假若寻觅对大小写不灵敏,单词“catalog”、“Catherine”、“sophisticated”都足以包容。也正是说:

图片 3

  壹.壹句点符号
  若是你在玩英文拼字游戏,想要找寻四个字母的单词,而且这一个单词必须以“t”字母开端,以“n”字母截止。此外,尽管有壹本英文字典,你能够用正则表明式寻觅它的全体内容。要结构出这么些正则表达式,你能够采用3个通配符??句点符号“.”。那样,完整的表达式正是“t.n”,它极度“tan”、“ten”、“tin”和“ton”,还格外“t#n”、“tpn”以至“tn”,还大概有任何很多无意义的结合。那是因为句点符号相配全部字符,包蕴空格、Tab字符以致换行符:

图片 4

  1.贰方括号符号
  为了化解句点符号相称范围过于普遍那一题目,你能够在方括号(“[]”)里面钦赐看来有意义的字符。此时,唯有方括号内部钦命的字符才加入合作。也正是说,正则表明式“t[aeio]n”只十三分“tan”、“Ten”、“tin”和“ton”。但“Toon”不匹配,因为在方括号之内你不得不相配单个字符:

图片 5

  一.肆象征极其次数的标志
  表壹呈现了表示相当次数的符号,这么些标志用来规定紧靠该符号左侧的号子出现的次数:

图片 6

  倘诺大家要在文件文件中找找U.S.的社会平安号码。那个编号的格式是99玖-9九-999玖。用来合作它的正则表明式如图一所示。在正则表明式中,连字符(“-”)有着出奇的意思,它代表3个范围,譬如从0到玖。由此,相配社会平安号码中的连字符号时,它的先头要增多三个转义字符“”。

图片 7

  图1:相称全部1二三-1二-123肆款式的社会安全号码
  若是进行搜索的时候,你期望连字符号能够出现,也得以不出现??即,99九-9玖-999玖和99999999九都属王斌确的格式。那时,你能够在连字符号前边加上“?”数量限制符号,如图二所示:

图片 8

  图二:相配全体1二三-1二-1234和12312123四样式的社会安全号码
  下边大家再来看此外1个事例。美利坚联邦合众国小车牌照的一种格式是七个数字增进一个字母。它的正则表达式前边是数字有的“[0-9]{ 4}”,再增进字母部分“[A-Z]{ 贰}”。图3来得了整机的正则表明式。

图片 9

  图三:相配规范的美利哥小车牌照号码,如883陆KV
  1.5“否”符号
  “^”符称得上为“否”符号。假如用在方括号内,“^”表示不想要相称的字符。比如,图肆的正则表明式相称全数单词,但以“X”字母开始的单词除却。

图片 10

  图4:相称全体单词,但“X”初始的不外乎
  1.六圆括号和空白符号
  假使要从格式为“June26,一九5三”的新乡日期中领到出月份部分,用来协作该日期的正则表明式能够如图5所示:

图片 11

  图伍:相称全体MothDD,YYYY格式的日子
  新面世的“s”符号是空白符号,相配全部的空白字符,包蕴Tab字符。假如字符串准确相称,接下去如何提收取月份部分吗?只需在月份周边加上3个圆括号创立3个组,然后用OROAPI(本文前面详细座谈)提抽取它的值。修改后的正则表明式如图陆所示:

图片 12

  图6:相称全数MonthDD,YYYY格式的日期,定义月份值为率先个组
  一.7别样符号
  为方便起见,你能够行使一些为相近正则表明式创制的快捷符号。如表2所示:
  表二:常用符号

图片 13

  比如,在前面社会平安号码的例证中,全部出现“[0-9]”的地点我们都足以动用“d”。修改后的正则表明式如图7所示:

图片 14

下边是2个简约的测试sql语句,能够直接在查询深入分析器中运作。
DECLARE @intLength AS INTEGER
DECLARE @vchRegularExpression AS VARCHAR(50)
DECLARE @vchSourceString as VARCHAR(50)
DECLARE @vchSourceString2 as VARCHAR(50)
DECLARE @bitHasNoSpecialCharacters as BIT

n         create [table,index,view,procedure]

/*------------------------ 效用:替换任何空白字符 -------------------------*/ function TrimString (strVal) { strTmp = strVal ""; if (strTmp.length == 0) return (strTmp); reVal = /^s*/; strTmp = strTmp.replace (reVal, ''); reVal = /s*$/; return (strTmp.replace (reVal, '')); } /*------------------------ 成效:检查评定是或不是是有效数字 -------------------------*/ function Check_Num( num ) { num = ( TrimString( num ) ); if (num.length == 0) return (false); return ( Number( num ) ); } /*------------------------ 成效:检验是不是是有效日期 -------------------------*/ function Check_Date (strDate) { strDate = (TrimString (strDate)); if (strDate.length == 0) return (false); reVal = /^([1-2]d{3})[/|-](0?[1-9]|10|11|12)[/|-]([1-2]?[0-9]|0[1-9]|30|31)$/; return (reVal.test (strDate)); } /*------------------------ 功效:检验是不是是有效Email -------------------------*/ function Check_Email (strEmail) { strEmail = (TrimString (strEmail)); if (strEmail.length == 0) return (false); reVal = /^[-!#$%&'* \./0-9=?A-Z^_`a-z{|}~] @[-!#$%&'* \./0-9=?A-Z^_`a-z{|}~] (.[-!#$%&'* \./0-9=?A-Z^_`a-z{|}~] ) $/; return (reVal.test (strEmail)); } /*------------------------ 作用:检验是还是不是是有效时间 -------------------------*/ function Check_Time (strTime) { strTime = (TrimString (strTime)); if (strTime.length == 0) return (false); reVal = /^(([0-9]|[01][0-9]|2[0-3])(:([0-9]|[0-5][0-9])){0,2}|(0?[0-9]|1[0-1])(:([0-9]|[0-5][0-9])){0,2}s?[aApP][mM])?$/; return (reVal.test (strTime)); } /*------------------------ 功用:检查测试是不是是有效日期特定格式 -------------------------*/ function Check_Date_1 (strDate) { strDate = (TrimString (strDate)); if (strDate.length == 0) return (false); reVal = /^([1-2]d{3})[/](0?[1-9]|10|11|12)[/]([1-2]?[0-9]|0[1-9]|30|31)$/; return (reVal.test (strDate)); } /*------------------------ 作用:检验是不是是有效日期特定格式 -------------------------*/ function Check_Date_2 (strDate) { strDate = (TrimString (strDate)); if (strDate.length == 0) return (false); reVal = /^([1-2]d{3})[-](0[1-9]|10|11|12)[-]([1-2][0-9]|0[1-9]|30|31)$/; return (reVal.test (strDate)); } /*-------------------------------------- 功用:换行定行 ---------------------------------------*/ function enter( form, temp ) { if ( window.event.keyCode == 13 ) { eval( form temp ".focus()" ); eval( form temp ".select()" ); } else return (false); } /*-------------------------------------- 功效:检查字符串长度 ---------------------------------------*/ function ByteString (strVal) { nLen = 0; for (i = 0; i < strVal.length; i ) { if (strVal.charCodeAt (i) > 255) nLen = 2; else nLen ; }; return (nLen); } /*-------------------------------------- 功用:按须求截取字符串长度 ---------------------------------------*/ function SubString(strVal,nStrLen) { nLen = 0; nTemp = 0; for (i = 0; i < strVal.length; i ) { if (strVal.charCodeAt (i) > 255) nLen = 2; else nLen ; if(nLen <= nStrLen) nTemp = i; else break; }; return(strVal.substr(0,nTemp 1)); } /*------------------------ 功用:检测密码,密码只可以由英文字母、数字、减号、下划线、$、#、*、(和)构成,且第几个人必须是英文字母 -------------------------*/ function Check_Pass( strPass ) { strPass = ( TrimString( strPass ) ); if (strPass.length == 0) return (false); reVal = /^[a-zA-Z]{1}[a-zA-Z0-9-_$#*()]{0,2玖}$/; return ( reVal.test (strPass) ); } 那是持有的,但是是PHP的,你协和调换一下吗~~

-- 开首化变量
SET @vchSourceString = 'Test one This is a test!!'
SET @vchSourceString2 = 'Test two This is a test'

n         drop [table,index,view,procedure]

# re: 正则表明式 200伍-02-2八 00:5玖 yongsheng

^(((19)|(20))d{2})(((((-|/)0?)|0)[1-9])|((-|/)?1[0-2]))((((((-|/)0?)|0)[1-9])|((-|/)?[1-2][0-9]))|((-|/)?3[0-1]))$

2004-1-1格式

-- 大家的正则表达式应该接近于
-- [a-zA-Z ]{}
-- 如: [a-zA-Z ]{10}  ...  2个十字符的字符串

n         alter [table,index,view,procedure]

# re: 正则宣布式 200五-0三-0柒 1四:33 yongsheng

一、验证类
壹、数字表达内
1.1 整数
壹.二 大于0的整数 (用于传来的ID的注解)
一.三 负整数的印证
一.四 整数不可能压倒i马克斯
壹.伍 整数不可能小于iMin
2、时间类
2.1 短时间,形如 (13:04:06)
2.2 短日期,形如 (2003-12-05)
2.3 长时间,形如 (2003-12-05 13:04:06)
贰.4 只有年和月。形如(200叁-0伍,也许200三-5)
二.伍 唯有时辰和分钟,形如(1二:0三)
3、表单类
三.1 全体的表单的值都不能够为空
叁.2 多创作本框的值不能够为空。
3.3 多创作本框的值无法超越s马克斯Strleng
3.四 多创作本框的值不可能简单sMixStrleng
叁.五 剖断单选框是不是采取。
3.陆 判定复选框是还是不是选用.
叁.七 复选框的全选,多选,全不选,反选
三.8 文件上传进程中推断文件类型
4、字符类
肆.1 判断字符全部由a-Z只怕是A-Z的字字母组成
四.2 剖断字符由字母和数字构成。
四.三 推断字符由字母和数字,下划线,点号组成.且起首的只可以是下划线和字母
四.四 字符串替换函数.Replace();
伍、浏览器类
伍.壹 决断浏览器的档期的顺序
5.2 判断ie的版本
伍.三 推断客户端的分辨率

6、结合类
6.1 email的判断。
陆.二 手提式有线电话机号码的印证
陆.三 身份证的辨证

二、功能类

壹、时间与相关控件类
1.1 日历
一.贰 时间控件
1.3 万年历
一.4 显示动态展现时钟效果(文本,如OA中时间)
一.5 展现动态突显时钟效果 (图像,像挂钟)
2、表单类
二.壹 自动生成表单
2.贰 动态增加,修改,删除下拉框中的成分
二.三 可以输入内容的下拉框
二.4多创作本框中只可以输入i马克斯文字。借使多输入了,自动削减到i马克斯个文字(多用来短信发送)

3、打印类
三.一 打字与印刷控件
4、事件类
四.一 屏蔽右键
四.二 屏蔽全部功用键
4.3 --> 和<-- F5 F11,F9,F1
4.肆 屏蔽组合键ctrl N
伍、网页设计类
5.1 三番五次滚动的文字,图片(注意是接2连3的,两段文字和图纸中从不空白出现)
5.二 html编辑控件类
伍.3 颜色挑选框控件
5.4 下拉菜单
伍.伍 两层或多等级次序的下拉菜单
5.6 仿IE菜单的按键。(效果如rongshuxa.com的领航栏目)
伍.7 状态栏,title栏的动态效果(例子诸多,能够研商一下)
五.八 双击后,网页自动滚屏
六、树型结构。
6.1 asp SQL版
6.2 asp xml sql版
6.3 java sql或者java sql xml
7、无边框效果的创设
八、连动下拉框本领
玖、文本排序

一、验证类
一、数字证实内
1.1 整数
/^(-| )?d $/.test(str)
一.二 大于0的整数 (用于传来的ID的印证)
/^d $/.test(str)
1.三 负整数的辨证
/^-d $/.test(str)
2、时间类
2.1 短时间,形如 (13:04:06)
function isTime(str)
{
var a = str.match(/^(d{1,2})(:)?(d{1,2})2(d{1,2})$/);
if (a == null) {alert('输入的参数不是岁月格式'); return false;}
if (a[1]>24 || a[3]>60 || a[4]>60)
{
alert("时间格式不对");
return false
}
return true;
}
2.2 短日期,形如 (2003-12-05)
function strDateTime(str)
{
var r = str.match(/^(d{1,4})(-|/)(d{1,2})2(d{1,2})$/);
if(r==null)return false;
var d= new Date(r[1], r[3]-1, r[4]);
return (d.getFullYear()==r[1]&&(d.getMonth() 1)==r[3]&&d.getDate()==r[4]);
}
2.3 长时间,形如 (2003-12-05 13:04:06)
function strDateTime(str)
{
var reg = /^(d{1,4})(-|/)(d{1,2})2(d{1,2}) (d{1,2}):(d{1,2}):(d{1,2})$/;
var r = str.match(reg);
if(r==null)return false;
var d= new Date(r[1], r[3]-1,r[4],r[5],r[6],r[7]);
return (d.getFullYear()==r[1]&&(d.getMonth() 1)==r[3]&&d.getDate()==r[4]&&d.getHours()==r[5]&&d.getMinutes()==r[6]&&d.getSeconds()==r[7]);
}
贰.四 唯有年和月。形如(200三-05,或许200三-5)
二.5 只有小时和分钟,形如(1二:0三)
3、表单类
三.1 全数的表单的值都不可能为空
<input onblur="if(this.value.replace(/^s |s $/g,'')=='')alert('不能为空!')">
3.二 多创作本框的值不可能为空。
三.三 多创作本框的值不能够超越s马克斯Strleng
3.4 多创作本框的值不能够轻便sMixStrleng
三.五 决断单选框是或不是选拔。
叁.六 判别复选框是不是采纳.
三.七 复选框的全选,多选,全不选,反选
三.8 文件上传进度中判别文件类型
4、字符类
4.一 推断字符全体由a-Z可能是A-Z的字字母组成
<input onblur="if(/[^a-zA-Z]/g.test(this.value))alert('有错')">
肆.二 判定字符由字母和数字组成。
<input onblur="if(/[^0-9a-zA-Z]/g.test(this.value))alert('有错')">
4.三 剖断字符由字母和数字,下划线,点号组成.且开始的只可以是下划线和字母
/^([a-zA-z_]{1})([w]*)$/g.test(str)
四.四 字符串替换函数.Replace();
伍、浏览器类
5.一 推断浏览器的类别
window.navigator.appName
5.2 判断ie的版本
window.navigator.appVersion
伍.三 剖断客户端的分辨率
window.screen.height; window.screen.width;

6、结合类
6.1 email的判断。
function ismail(mail)
{
return(new RegExp(/^w ((-w )|(.w ))*@[A-Za-z0-9] ((.|-)[A-Za-z0-9] )*.[A-Za-z0-9] $/).test(mail));
}
陆.二 手机号码的证实
陆.三 身份证的印证
function isIdCardNo(num)
{
if (isNaN(num)) {alert("输入的不是数字!"); return false;}
var len = num.length, re;
if (len == 15)
re = new RegExp(/^(d{6})()?(d{2})(d{2})(d{2})(d{3})$/);
else if (len == 18)
re = new RegExp(/^(d{6})()?(d{4})(d{2})(d{2})(d{3})(d)$/);
else {alert("输入的数字位数不对!"); return false;}
var a = num.match(re);
if (a != null)
{
if (len==15)
{
var D = new Date("19" a[3] "/" a[4] "/" a[5]);
var B = D.getYear()==a[3]&&(D.getMonth() 1)==a[4]&&D.getDate()==a[5];
}
else
{
var D = new Date(a[3] "/" a[4] "/" a[5]);
var B = D.getFullYear()==a[3]&&(D.getMonth() 1)==a[4]&&D.getDate()==a[5];
}
if (!B) {alert("输入的身份证号 " a[0] " 里出出生之日期不对!"); return false;}
}
return true;
}

三.7 复选框的全选,多选,全不选,反选
<form name=hrong>
<input type=checkbox name=All onclick="checkAll('mm')">全选<br/>
<input type=checkbox name=mm onclick="checkItem('All')"><br/>
<input type=checkbox name=mm onclick="checkItem('All')"><br/>
<input type=checkbox name=mm onclick="checkItem('All')"><br/>
<input type=checkbox name=mm onclick="checkItem('All')"><br/>
<input type=checkbox name=mm onclick="checkItem('All')"><br/><br/>

<input type=checkbox name=All2 onclick="checkAll('mm2')">全选<br/>
<input type=checkbox name=mm2 onclick="checkItem('All2')"><br/>
<input type=checkbox name=mm2 onclick="checkItem('All2')"><br/>
<input type=checkbox name=mm2 onclick="checkItem('All2')"><br/>
<input type=checkbox name=mm2 onclick="checkItem('All2')"><br/>
<input type=checkbox name=mm2 onclick="checkItem('All2')"><br/>

</form>

<SCRIPT LANGUAGE="JavaScript">
function checkAll(str)
{
var a = document.getElementsByName(str);
var n = a.length;
for (var i=0; i<n; i )
a[i].checked = window.event.srcElement.checked;
}
function checkItem(str)
{
var e = window.event.srcElement;
var all = eval("document.hrong." str);
if (e.checked)
{
var a = document.getElementsByName(e.name);
all.checked = true;
for (var i=0; i<a.length; i )
{
if (!a[i].checked){ all.checked = false; break;}
}
}
else all.checked = false;
}
</SCRIPT>

3.八 文件上传进程中判别文件类型
<input type=file onchange="alert(this.value.match(/^(.*)(.)(.{1,8})$/)[3])">

画图:
<OBJECT
id=S

height=240
width=392
classid="clsid:369303C2-D7AC-11D0-89D5-00A0C90833E6">
</OBJECT>
<SCRIPT>
S.DrawingSurface.ArcDegrees(0,0,0,30,50,60);
S.DrawingSurface.ArcRadians(30,0,0,30,50,60);
S.DrawingSurface.Line(10,10,100,100);
</SCRIPT>

写注册表:
<SCRIPT>
var WshShell = WScript.CreateObject("WScript.Shell");
WshShell.RegWrite ("HKCU\Software\ACME\FortuneTeller\", 1, "REG_BINARY");
WshShell.RegWrite ("HKCU\Software\ACME\FortuneTeller\MindReader", "Goocher!", "REG_SZ");
var bKey = WshShell.RegRead ("HKCU\Software\ACME\FortuneTeller\");
WScript.Echo (WshShell.RegRead ("HKCU\Software\ACME\FortuneTeller\MindReader"));
WshShell.RegDelete ("HKCU\Software\ACME\FortuneTeller\MindReader");
WshShell.RegDelete ("HKCU\Software\ACME\FortuneTeller\");
WshShell.RegDelete ("HKCU\Software\ACME\");
</SCRIPT>

TABLAE相关(客户端动态扩大行列)
<HTML>
<SCRIPT LANGUAGE="JScript">
function numberCells() {
var count=0;
for (i=0; i < document.all.mytable.rows.length; i ) {
for (j=0; j < document.all.mytable.rows(i).cells.length; j ) {
document.all.mytable.rows(i).cells(j).innerText = count;
count ;
}
}
}
</SCRIPT>
<BODY onload="numberCells()">
<TABLE id=mytable border=1>
<TR><TH> </TH><TH> </TH><TH> </TH><TH> </TH></TR>
<TR><TD> </TD><TD> </TD><TD> </TD><TD> </TD></TR>
<TR><TD> </TD><TD> </TD><TD> </TD><TD> </TD></TR>
</TABLE>
</BODY>
</HTML>

1.身份证严厉验证:

<script>
var aCity={11:"北京",12:"天津",13:"河北",14:"山西",15:"内蒙古",21:"辽宁",22:"吉林",23:"黑龙江",31:"上海",32:"江苏",33:"浙江",34:"安徽",35:"福建",36:"江西",37:"山东",41:"河南",42:"湖北",43:"湖南",44:"广东",45:"广西",46:"海南",50:"重庆",51:"四川",52:"贵州",53:"云南",54:"西藏",61:"陕西",62:"甘肃",63:"青海",64:"宁夏",65:"新疆",71:"台湾",81:"香港",82:"澳门",91:"国外"}

function cidInfo(sId){
var iSum=0
var info=""
if(!/^d{17}(d|x)$/i.test(sId))return false;
sId=sId.replace(/x$/i,"a");
if(aCity[parseInt(sId.substr(0,2))]==null)return "Error:违规地带";
sBirthday=sId.substr(6,4) "-" Number(sId.substr(10,2)) "-" Number(sId.substr(12,2));
var d=new Date(sBirthday.replace(/-/g,"/"))
if(sBirthday!=(d.getFullYear() "-" (d.getMonth() 1) "-" d.getDate()))return "Error:违法破壳日";
for(var i = 17;i>=0;i --) iSum = (Math.pow(2,i) % 11) * parseInt(sId.charAt(17 - i),11)
if(iSum!=一)return "Error:违法证号";
return aCity[parseInt(sId.substr(0,2))] "," sBirthday "," (sId.substr(16,1)%2?"男":"女")
}

document.write(cidInfo("380524198002300016"),"<br/>");
document.write(cidInfo("340524198002300019"),"<br/>")
document.write(cidInfo("340524197711111111"),"<br/>")
document.write(cidInfo("34052419800101001x"),"<br/>");
</script>

2.验证IP地址
<SCRIPT LANGUAGE="JavaScript">
function isip(s){
var check=function(v){try{return (v<=255 && v>=0)}catch(x){return false}};
var re=s.split(".")
return (re.length==4)?(check(re[0]) && check(re[1]) && check(re[2]) && check(re[3])):false
}

var s="202.197.78.129";
alert(isip(s))
</SCRIPT>

3.加sp一后还是能用的Infiniti框窗口!!
<HTML XMLNS:IE>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<IE:Download ID="include" />
<title>Chromeless Window</title>

<SCRIPT LANGUAGE="JScript">
/*--- Special Thanks For andot ---*/

/*
This following code are designed and writen by Windy_sk <seasonx@163.net>
You can use it freely, but u must held all the copyright items!
*/

/*--- Thanks For andot Again ---*/

var CW_width = 400;
var CW_height = 300;
var CW_top = 100;
var CW_left = 100;
var CW_url = "/";
var New_CW = window.createPopup();
var CW_Body = New_CW.document.body;
var content = "";
var CSStext = "margin:1px;color:black; border:2px outset;border-style:expression(onmouseout=onmouseup=function(){this.style.border }, onmousedown=function(){if(event.button!=2)this.style.border });background-color:buttonface;width:16px;height:14px;font-size:12px;line-height:11px;cursor:Default;";

//Build Window
include.startDownload(CW_url, function(source){content=source});

function insert_content(){
var temp = "";
CW_Body.style.overflow = "hidden";
CW_Body.style.backgroundColor = "white";
CW_Body.style.border = "solid black 1px";
content = content.replace(/<a ([^>]*)>/g,"<a onclick='parent.open(this.href);return false' $1>");
temp = "<table width=100% height=100% cellpadding=0 cellspacing=0 border=0>";
temp = "<tr ondblclick="Max.innerText=Max.innerText=='1'?'2':'1';parent.if_max=!parent.if_max;parent.show_CW();" onmouseup='parent.drag_up(event)' onmousemove='parent.drag_move(event)' onmousedown='parent.drag_down(event)' onselectstart='return false' oncontextmenu='return false'>";
temp = "<td >Chromeless Window For IE6 SP1</td>";
temp = "<td align=right>";
temp = "<span id=Help onclick="alert('Chromeless Window For IE6 SP1 - Ver 1.0\n\nCode By Windy_sk\n\nSpecial Thanks For andot')" style="" CSStext "font-family:System;padding-right:2px;">?</span>";
temp = "<span id=Min onclick='parent.New_CW.hide();parent.blur()' style="" CSStext "font-family:Webdings;" title='Minimum'>0</span>";
temp = "<span id=Max onclick="this.innerText=this.innerText=='1'?'2':'1';parent.if_max=!parent.if_max;parent.show_CW();" style="" CSStext "font-family:Webdings;" title='Maximum'>1</span>";
temp = "<span id=Close onclick='parent.opener=null;parent.close()' style="" CSStext "font-family:System;padding-right:2px;" title='Close'>x</span>";
temp = "</td></tr><tr><td colspan=2>";
temp = "<div id=include CW_width "'>";
temp = content;
temp = "</div>";
temp = "</td></tr></table>";
CW_Body.innerHTML = temp;
}

setTimeout("insert_content()",1000);

var if_max = true;
function show_CW(){
window.moveTo(10000, 10000);
if(if_max){
New_CW.show(CW_top, CW_left, CW_width, CW_height);
if(typeof(New_CW.document.all.include)!="undefined"){
New_CW.document.all.include.style.width = CW_width;
New_CW.document.all.Max.innerText = "1";
}

}else{
New_CW.show(0, 0, screen.width, screen.height);
New_CW.document.all.include.style.width = screen.width;
}
}

window.onfocus = show_CW;
window.onresize = show_CW;

// Move Window
var drag_x,drag_y,draging=false

function drag_move(e){
if (draging){
New_CW.show(e.screenX-drag_x, e.screenY-drag_y, CW_width, CW_height);
return false;
}
}

function drag_down(e){
if(e.button==2)return;
if(New_CW.document.body.offsetWidth==screen.width && New_CW.document.body.offsetHeight==screen.height)return;
drag_x=e.clientX;
drag_y=e.clientY;
draging=true;
e.srcElement.setCapture();
}

function drag_up(e){
draging=false;
e.srcElement.releaseCapture();
if(New_CW.document.body.offsetWidth==screen.width && New_CW.document.body.offsetHeight==screen.height) return;
CW_top = e.screenX-drag_x;
CW_left = e.screenY-drag_y;
}

</SCRIPT>
</HTML>

电话号码的评释

要求:
  (一)电话号码由数字、"("、")"和"-"构成
  (二)电话号码为三到八位
  (三)若是电话号码中包罗有区号,那么区号为四个人或四人
  (4)区号用"("、")"或"-"和任何部分隔断
  (伍)移动电话号码为1一或11个人,借使为九人,那么首先位为0
  (六)十二位移动电话号码的第2个人和第一个人为"一三"
  (7)十二位移动电话号码的第4位和第1位为"1三"
  依据这几条规则,能够与出以下正则表明式:
  (^[0-9]{3,4}-[0-9]{3,8}$)|(^[0-9]{3,8}$)|(^([0-9]{3,4})[0-9]{3,8}$)|(^0{0,1}13[0-9]{9}$)

<script language="javascript">
function PhoneCheck(s) {
var str=s;
var reg=/(^[0-9]{3,4}-[0-9]{3,8}$)|(^[0-9]{3,8}$)|(^([0-9]{3,4})[0-9]{3,8}$)|(^0{0,1}13[0-9]{9}$)/
alert(reg.test(str));
}
</script>
<input type=text name="iphone">
<input type=button onclick="PhoneCheck(document.all.iphone.value)" value="Check">

拥有在输入非数字字符不回显的功用,即对非数字字符的输入不作反应。
function numbersonly(field,event){
var key,keychar;
if(window.event){
key = window.event.keyCode;
}
else if (event){
key = event.which;
}
else{
return true
}
keychar = String.fromCharCode(key);
if((key == null)||(key == 0)||(key == 8)||(key == 9)||(key == 13)||(key == 27)){
return true;
}
else if(("0123456789.").indexOf(keychar)>-1){
window.status = "";
return true;
}
else {
window.status = "Field excepts numbers only";
return false;
}
}

验证ip

str=document.RegExpDemo.txtIP.value;
if(/^(d{1,3}).(d{1,3}).(d{1,3}).(d{1,3})$/.test(str)==false)
{
window.alert('错误的IP地址格式');
document.RegExpDemo.txtIP.select();
document.RegExpDemo.txtIP.focus();
return;
}
if(RegExp.$1<1 || RegExp.$1>254||RegExp.$2<0||RegExp.$2>254||RegExp.$3<0||RegExp.$3>254||RegExp.$4<1||RegExp.$4>254)
{
window.alert('错误的IP地址');
document.RegExpDemo.txtIP.select();
document.RegExpDemo.txtIP.focus();
return;
}
//剔除 如 010.020.020.03 前面 的0
var str=str.replace(/0(d)/g,"$1");
str=str.replace(/0(d)/g,"$1");
window.alert(str);

//一下是取多少的类
//Obj参数钦赐数量的来源(限定Table),默许第三行为字段名称行
//GetTableData类提供MoveNext方法,参数是表的行向上或向下移动的位数,正数向下移动,负数向上.
//GetFieldData方法获得钦赐的列名的数目
//Sort_desc方法对点名的列按降序排列
//Sort_asc方法对点名的列按升序排列
//GetData方法重返字段值为特定值的数码数组,提供数据,能够在表面举办别的管理
//Delete方法删除当前记下,数组收缩1行
//初步化,Obj:table的名字,Leftlen:左面多余数据长度,Rightlen:右面多余数据长度,
function GetTableData(Obj,LeftLen,RightLen){
var MyObj=document.all(Obj);
var iRow=MyObj.rows.length;
var iLen=MyObj.rows[0].cells.length;
var i,j;

TableData=new Array();
for (i=0;i< iRow;i ){
TableData[i]=new Array();
for (j=0;j<iLen;j ){
TableStr=MyObj.rows(i).cells(j).innerText;
TableStr=TableStr.substring(LeftLen, TableStr.length-RightLen).Trim();
TableStr=TableStr.replace(/ /gi,"").replace(/rn/ig,"");
TableData[i][j]=TableStr;
}
}

this.TableData=TableData;
this.cols=this.TableData[0].length;
this.rows=this.TableData.length;
this.rowindex=0;
}

function movenext(Step){
if (this.rowindex>=this.rows){
return
}

if (Step=="" || typeof(Step)=="undefined") {
if (this.rowindex<this.rows-1)
this.rowindex ;
return;

}
else{
if (this.rowindex Step<=this.rows-1 && this.rowindex Step>=0 ){
this.rowindex=this.rowindex Step;
}
else
{
if (this.rowindex Step<0){
this.rowindex= 0;
return;
}
if (this.rowindex Step>this.rows-1){
this.rowindex= this.rows-1;
return;
}
}
}
}

function getfielddata(Field){
var colindex=-1;
var i=0;
if (typeof(Field) == "number"){
colindex=Field;
}
else
{
for (i=0;i<this.cols && this.rowindex<this.rows ;i ){
if (this.TableData[0][i]==Field){
colindex=i;
break;
}
}
}
if (colindex!=-1) {
return this.TableData[this.rowindex][colindex];
}

}

function sort_desc(){//降序
var colindex=-1;
var highindex=-1;
desc_array=new Array();
var i,j;
for (n=0; n<arguments.length; n ){
Field=arguments[arguments.length-1-n];
for (i=0;i<this.cols;i ){
if (this.TableData[0][i]==Field){
colindex=i;
break;
}
}
if ( colindex==-1 )
return;
else
{
desc_array[0]=this.TableData[0];
for(i=1;i<this.rows;i ){
desc_array[i]=this.TableData[1];
highindex=1;
for(j=1;j<this.TableData.length;j ){
if (desc_array[i][colindex]<this.TableData[j][colindex]){
desc_array[i]=this.TableData[j];
highindex=j;
}

}
if (highindex!=-1)
this.TableData=this.TableData.slice(0,highindex).concat(this.TableData.slice(highindex 1,this.TableData.length));
}
}

this.TableData=desc_array;
}
return;
}

function sort_asc(){//升序
var colindex=-1;
var highindex=-1;
var i,j;
for (n=0; n<arguments.length; n ){
asc_array=new Array();
Field=arguments[arguments.length-1-n];
for (i=0;i<this.cols;i ){
if (this.TableData[0][i]==Field){
colindex=i;
break;
}
}
if ( colindex==-1 )
return;
else
{
asc_array[0]=this.TableData[0];
for(i=1;i<this.rows;i ){
asc_array[i]=this.TableData[1];
highindex=1;
for(j=一;j<this.TableData.length;j ){//找寻最小的列值
if (asc_array[i][colindex]>this.TableData[j][colindex]){
asc_array[i]=this.TableData[j];
highindex=j;

}

}
if (highindex!=-1)
this.TableData=this.TableData.slice(0,highindex).concat(this.TableData.slice(highindex 1,this.TableData.length));

}
}

this.TableData=asc_array;
}
return;
}

function getData(Field,FieldValue){
var colindex=-1;
var i,j;

GetData=new Array();
if (typeof(Field)=="undefined" || typeof(FieldValue)=="undefined" ){
return this.TableData;
}

for(j=0;j<this.cols;j ){
if (this.TableData[0][j]==Field){
colindex=j;
}
}
if (colindex!=-1){

for(i=1;i<this.rows;i ){
if (this.TableData[i][colindex]==FieldValue){
GetData[i]=new Array();
GetData[i]=this.TableData[i];
}
}
}
return GetData;
}
function DeletE(){
this.TableData=this.TableData.slice(0,this.rowindex).concat(this.TableData.slice(this.rowindex 1,this.TableData.length));
this.rows=this.TableData.length;
return;
}
function updateField(Field,FieldValue){
var colindex=-1;
var i=0;
if (typeof(Field) == "number"){
colindex=Field;
}
else
{
for (i=0;i<this.cols && this.rowindex<this.rows ;i ){
if (this.TableData[0][i]==Field){
colindex=i;
break;
}
}
}
if (colindex!=-1) {
this.TableData[this.rowindex][colindex]=FieldValue;
}

}
function movefirst(){
this.rowindex=0;
}
function movelast(){
this.rowindex=this.rows-1;
}
function String.prototype.Trim() {return this.replace(/(^s*)|(s*$)/g,"");}
GetTableData.prototype.MoveNext = movenext;
GetTableData.prototype.GetFieldData = getfielddata;
GetTableData.prototype.Sort_asc = sort_asc;
GetTableData.prototype.Sort_desc = sort_desc;
GetTableData.prototype.GetData = getData;
GetTableData.prototype.Delete = DeletE;
GetTableData.prototype.UpdateField = updateField;
GetTableData.prototype.MoveFirst = movefirst;

切切实实的例证:

在每一种文本框的onblur事件中调用校验代码,并且每个文本框中onKeyDown事件中写七个enter转tab函数

//回车键换为tab
function enterToTab()
{
if(event.srcElement.type != 'button' && event.srcElement.type != 'textarea'
&& event.keyCode == 13)
{
event.keyCode = 9;
}
}


-- 获得字符串长度
SET @intLength = LEN(@vchSourceString)

 

-- 设置完整的正则表达式
SET @vchRegularExpression = '[a-zA-Z ]{' CAST(@intLength as varchar)

l         DML(Data Management Language)数据操作语言

  • '}'

 

-- 是不是有别的特殊字符
SET @bitHasNoSpecialCharacters = dbo.find_regular_expression(@vchSourceString, @vchRegularExpression,0)

n         insert

PRINT @vchSourceString
IF @bitHasNoSpecialCharacters = 1 BEGIN
 PRINT 'No special characters.'
END ELSE BEGIN
 PRINT 'Special characters found.'
END

n         update

PRINT '**************'

n         delete

-- 获得字符串长度
SET @intLength = LEN(@vchSourceString2)

n         select

-- 设置完整的正则表达式
SET @vchRegularExpression = '[a-zA-Z ]{' CAST(@intLength as varchar)

 

  • '}'

l         DCL(Data Control Language)数据调整语言

-- 是或不是有其余特殊字符
SET @bitHasNoSpecialCharacters = dbo.find_regular_expression(@vchSourceString2, @vchRegularExpression,0)

n         Grant insert,select,update

PRINT @vchSourceString2
IF @bitHasNoSpecialCharacters = 1 BEGIN
 PRINT 'No special characters.'
END ELSE BEGIN
 PRINT 'Special characters found.'
END

On stuInfo

GO

To zhangsan


 

n         revoke all

on stuInfo

to zhangsan

 

1.1.2 SQL Server介绍,安装

 

一.贰 基本知识

一.2.一 暗中认可数据库

       系统库:master(sysdatabases) model msdb tempdb

       用户库:northwind

 

两张独特表(视图)

    ◆Sysdatabases:系统视图,存款和储蓄当前数据库的详细消息,包罗创设时间,成立人,主数据文件地点等音讯,整个数据库唯有一个,在master下。

    ◆Sysobjects,每种数据库一张,存款和储蓄当前数据库对象音讯,对象包涵表,视图,约束。

 

非凡的函数:exists参数是1个select类其他sql语句,假设有结果重回true,否则重回false.

 

1.2.2 建库

create database stuDB

exists函数的行使

文件分类

  ◆数据文件:

         主数据文件:有且唯有贰个

         次数据文件:0个到四个

  ◆日志文件:0个到几个

use master--设置当前数据库为master,以便访问sysdatabases表

go

if exists (select * from sysdatabases where name='stuDB')

Drop database stuDB

go

 

create database stuDB

on primary--默认就属于primary主文件组,可省略

(

    name='stuDB_data',--主数据文件的逻辑名

    filename='D:我的文档SQL Server Management StudioProjectsstuDB_data.mdf',--主数据文件的物理名

    size=5mb,--主数据文件的初始大小

    maxsize=100mb,--主数据文件增长的最大值

    filegrowth=15%--主数据文件的增长率

)

log on

(

    name='stuDB_log',

    filename='D:我的文档SQL Server Management StudioProjectsstuDB_log.ldf',

    size=2mb,

    filegrowth=1mb

)

 

1.2.3 建表

要用到一张视图sysobjects,用于查看数据库中的全部表(包涵其余的储存进程,主键,外键等。)

create table tablename

(

    列名 数据类型 约束(一般为非空约束)

)

use stuDB

go

 

create table class

(

    clsId int identity not null,

    clsName varchar(20) not null

)

go

create table student

(

    stuId int not null,

    clsId int not null,

    stuName varchar(20) not null,

    stuAge int not null,

    stuAddress varchar(20) not null

  context varchar(20) not null

)

go

 

identity(种子,自增量):表示从种子开始,每一遍自增自增量个。默感到identity(一,一)

 

封锁类别

    ◆主键约束(primary key constraint):供给主键列数据唯壹,并且不允许为空。

    ◆唯一约束(unique constraint):要求该列唯一,允许为空,但只可以出现贰个空值。

    ◆检查约束(check constraint):某列取值范围、格式限制等,如关于年龄的牢笼。

    ◆私下认可约束(default constraint):某列的暗中认可值,如大家的男士学员较多,性别默以为男。

    ◆外键约束(foregin key constraint):用于两表间创立关系,需求内定引用主表的那列,哪个表是外键表,就修改哪个表。

alter table tablename

    add constraint 约束名 约束类型 具体的约束说明  

alter table class

add constraint PK_clsId primary key (clsId)

alter table student

    add constraint PK_sutId primary key(stuId)

alter table student

    add constraint FK_clsId foreign key(clsId) references class(clsId)

alter table student

    add constraint CK_stuAge check(stuAge between 18 and 35)

alter table student

    add constraint DF_stuAddress default('地址不详') for stuAddress

alter table student

    add constraint UQ_stuName unique(stuName)

go

 

建表同期加约束:不建议选用。

create table exam

(

    examId int identity primary key,

    stuId int foreign key references student(stuId),

    exam int not null check(exam between 0 and 100)

)

go

 

使用select * from sysobjects查看时,会现出下边那样的情况:

图片 15

不清晰,不便于通晓

 

较好的状态是:

图片 16

那般清晰明了。

 

壹.二.四 列的操作

◆增加列

alter table student

    add context varchar(20)

◆修改列

alter table student

    alter column context varchar(20)

◆删除列

alter table student

drop column context

 

一.三 新增扩张少

1.三.1 插入单行数据

insert into class(clsName) values('一班')

insert into class(clsName) values('二班')

insert into class(clsName) values('三班')

go

insert into student(clsId,stuName,stuAge,stuAddress,context)

values(1,'zhangsan1',18,default,'good')

insert into student(clsId,stuName,stuAge,stuAddress,context)

values(2,'zhangsan2',19,default,'good')

insert into student(clsId,stuName,stuAge,stuAddress,context)

values(3,'zhangsan3',20,default,'good')

insert into student(clsId,stuName,stuAge,stuAddress,context)

values(1,'zhangsan4',21,default,'good')

insert into student(clsId,stuName,stuAge,stuAddress,context)

values(1,'zhangsan5',22,default,'good')

insert into student(clsId,stuName,stuAge,stuAddress,context)

values(1,'zhangsan6',23,default,'good')

insert into student(clsId,stuName,stuAge,stuAddress,context)

values(1,'zhangsan7',24,default,'good')

insert into student(clsId,stuName,stuAge,stuAddress,context)

values(2,'zhangsan8',25,default,'good')

insert into student(clsId,stuName,stuAge,stuAddress,context)

values(2,'zhangsan9',26,default,'good')

insert into student(clsId,stuName,stuAge,stuAddress,context)

values(2,'zhangsan10',27,default,null)

insert into student(clsId,stuName,stuAge,stuAddress,context)

values(2,'zhangsan11',28,default,null)

insert into student(clsId,stuName,stuAge,stuAddress,context)

values(3,'zhangsan12',35,default,null)

insert into student(clsId,stuName,stuAge,stuAddress,context)

values(3,'zhangsan13',30,default,null)

go

 

一.三.二 插入多行数据

◆方式一:创立新表,把旧表中的数据放入到新表中,一般演习时采取,只复制表结议和数码(标志列标准也复制),并未有复制约束。

select * into newtable from class

select * from newtable

go

 

◆情势二:以询问的有个别结果作为源放入表中,保障列个数,数据类型,具体尺寸统一。

insert into newtable(clsId,clsName)

select stuId,context from student

go

 

◆方式三:

insert into class(clsName)

select 'aa' union

select 'aa1' union

select 'aa2' union

select 'aa'

go

 

1.4 查询

1.四.一 聚合函数

◆Count: 求总个数,不包蕴null列。

select count(context),count(*) from student

 

◆Sum : 求总和

select sum(stuAge) from student

 

◆Avg: 求平均值

select avg(stuAge) from student

 

◆马克斯: 求最大值

select max(stuAge) from student

 

◆Min: 求最小值

select min(stuAge) from student

 

本文由韦德国际1946发布于韦德国际1946国际网址,转载请注明出处:选取正则表明式,mssql使用总计

关键词: MSSql mssql使用总结