??xml version="1.0" encoding="utf-8" standalone="yes"?> 做ؓ转意Q即通常?\"后面的字W不按原来意义解释,?b/匚w字符"b"Q当b前面加了反斜杆后/\b/Q{意ؓ匚w一个单词的边界?
q是中文版教E?br />
http://www.prototypejs.org/
官方|站
]]>
/.../Q代表一个模式的开始和l束?br>^Q用来匹配输入字W串的开始。(定位W)
$Q用来匹配输入字W串的结束。(定位W)
:是个转义字符Qd׃表匹配一个数字。(不会不知道{义吧Q)
{n}Q代表前边子模式匚w的次数。(限定W)
字符
含意
\
-?
Ҏ则表辑ּ功能字符的还原,?*"匚w它前面元字符0ơ或多次Q?a*/匹配a,aa,aaaQ加?\"后,/a\*/只匚w"a*"?
^
匚w一个输入或一行的开_/^a/匚w"an A"Q而不匚w"An a"
$
匚w一个输入或一行的l尾Q?a$/匚w"An a"Q而不匚w"an A"
*
匚w前面元字W?ơ或多次Q?ba*/匹配b,ba,baa,baaa
+
匚w前面元字W?ơ或多次Q?ba*/匹配ba,baa,baaa
?
匚w前面元字W?ơ或1ơ,/ba*/匹配b,ba
(x)
匚wx保存x在名?1...$9的变量中
x|y
匚wx或y
{n}
_匚wn?
{n,}
匚wnơ以?
{n,m}
匚wn-m?
[xyz]
字符?character set)Q匹配这个集合中的Q一一个字W?或元字符)
[^xyz]
不匹配这个集合中的Q何一个字W?
[\b]
匚w一个退格符
\b
匚w一个单词的边界
\B
匚w一个单词的非边?/td>
\cX
q儿QX是一个控制符Q?\cM/匚wCtrl-M
\d
匚w一个字数字W,/\d/ = /[0-9]/
\D
匚w一个非字数字符Q?\D/ = /[^0-9]/
\n
匚w一个换行符
\r
匚w一个回车符
\s
匚w一个空白字W,包括\n,\r,\f,\t,\v{?
\S
匚w一个非I白字符Q等?[^\n\f\r\t\v]/
\t
匚w一个制表符
\v
匚w一个重直制表符
\w
匚w一个可以组成单词的字符(alphanumericQ这是我的意译,含数?Q包括下划线Q如[\w]匚w"$5.98"中的5Q等于[a-zA-Z0-9]
\W
匚w一个不可以l成单词的字W,如[\W]匚w"$5.98"中的$Q等于[^a-zA-Z0-9]?/td>
if(/^\d+$/.test(obj.value)){
return true;
}else{
alert('误入数?/span>!');
return false;
}
}
一个文本格式或正则表达式构造函?
文本格式Q?/pattern/flags
正则表达式构造函敎ͼ new RegExp("pattern"[,"flags"]);
pattern -- 一个正则表辑ּ文本
flags -- 如果存在Q将是以下|
g: 全局匚w
i: 忽略大小?
gi: 以上l合
var reg=new RegExp("l古","g"); //创徏正则RegExp对象
var stringObj="l古人民共和国,l古人民";
var newstr=stringObj.replace(reg,"中国");
alert(newstr);
</script>
var reg=new RegExp("l古","g");
var str="l古人民共和国,l古人民";
var newstr=str.replace(reg,"中国");
var ostr=str.replace(/(?/g,"<font color=red>$1</font>");
document.write(ostr);
alert(newstr);
</script>
]]>
]]>
]]>
]]>
//校验是否全由数字l成
function isDigit ( s )
{
var patrn =/ ^[0-9]{1,20}$ /;
if (! patrn . exec ( s )) return false
return true
}
//校验d名:只能输入5-20个以字母开头、可带数字、“_”、?”的字串
function isRegisterUserName ( s )
{
var patrn =/ ^[a-zA-Z]{1}([a-zA-Z0-9]|[._]){4,19}$ /;
if (! patrn . exec ( s )) return false
return true
}
//校验用户姓名Q只能输?-30个以字母开头的字串
function isTrueName ( s )
{
var patrn =/ ^[a-zA-Z]{1,30}$ /;
if (! patrn . exec ( s )) return false
return true
}
}}
/ /校验密码Q只能输?/span> 6 - 20个字母、数字、下划线
[ code ]
function isPasswd ( s )
{
var patrn =/ ^(\w){6,20}$ /;
if (! patrn . exec ( s )) return false
return true
}
//校验普通电话、传真号码:可以?”开_除数字外Q可含有??
function isTel ( s )
{
/ / var patrn =/ ^[+]{0,1}(\d){1,3}[ ]?([-]?(\d){1,12})+$ /;
var patrn =/ ^[+]{0,1}(\d){1,3}[ ]?([-]?((\d)|[ ]){1,12})+$ /;
if (! patrn . exec ( s )) return false
return true
}
//校验手机LQ必M数字开_除数字外Q可含有??
function isMobil ( s )
{
var patrn =/ ^[+]{0,1}(\d){1,3}[ ]?([-]?((\d)|[ ]){1,12})+$ /;
if (! patrn . exec ( s )) return false
return true
}
//校验邮政~码
function isPostalCode ( s )
{
/ / var patrn =/ ^[a-zA-Z0-9]{3,12}$ /;
var patrn =/ ^[a-zA-Z0-9 ]{3,12}$ /;
if (! patrn . exec ( s )) return false
return true
}
//校验搜烦关键?
function isSearch ( s )
{
var patrn =/ ^[^`~!@#$%^&*()+=|\\\][\]\{\}:;'\,.<> / ?] { 1 }[^`~! @ $%^ &()+=|\\\]
[\]\{\}:;' \,.<>?]{0,19}$/;
if (!patrn.exec(s)) return false
return true
}function isIP(s) //by zergling
{ var patrn=/^[0-9.]{1,20}$/;
if (!patrn.exec(s)) return false
return true
}
正则表达?/span>
" ^\\d+$ " // 非负整数Q正整数 + 0Q?
"^[0-9]*[1-9][0-9]*$" //正整?/span>
" ^((-\\d+)|(0+))$ " // 非正整数Q负整数 + 0Q?
"^-[0-9]*[1-9][0-9]*$" //负整?/span>
" ^-?\\d+$ " // 整数
"^\\d+(\\.\\d+)?$" //非负点敎ͼ正QҎ + 0Q?/span>
" ^(([0-9]+\\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\\.[0-9]+)|([0-9]*[1-9][0-9]*))$ "
/ /正QҎ
" ^((-\\d+(\\.\\d+)?)|(0+(\\.0+)?))$ " // 非正点敎ͼ负QҎ + 0Q?
"^(-(([0-9]+\\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\\.[0-9]+)|([0-9]*[1-9][0-9]*)))$"
//负QҎ
" ^(-?\\d+)(\\.\\d+)?$ " // 点?
"^[A-Za-z]+$" //?/span> 26个英文字母组成的字符?/span>
" ^[A-Z]+$ " // ?6个英文字母的大写l成的字W串
"^[a-z]+$" //?/span> 26个英文字母的写l成的字W串
" ^[A-Za-z0-9]+$ " // 由数字和26个英文字母组成的字符?
"^\\w+$" //由数字?/span> 26个英文字母或者下划线l成的字W串
" ^[\\w-]+(\\.[\\w-]+)*@[\\w-]+(\\.[\\w-]+)+$ " // email地址
"^[a-zA-z]+: //(\\ w +(-\\ w +)*)(\\.(\\ w +(-\\ w +)*))*(\\ ?\\ S *) ?$ " //url
"^[ A - Za - z0 - 9_ ]* $"
正则表达式用详?/span>
?
单的_正则表达式是一U可以用于模式匹配和替换的强有力的工兗其作用如下Q?
试字符串的某个模式。例如,可以对一个输入字W串q行试Q看在该字符串是否存在一个电话号码模式或一个信用卡L模式。这UCؓ数据有效性验证?
替换文本。可以在文档中用一个正则表辑ּ来标识特定文字,然后可以全部其删除Q或者替换ؓ别的文字?
Ҏ模式匚w从字W串中提取一个子字符丌Ӏ可以用来在文本或输入字D中查找特定文字?
基本语法
在对正则表达式的功能和作用有了初步的了解之后Q我们就来具体看一下正则表辑ּ的语法格式?
正则表达式的形式一般如下:
/love/ 其中位于?”定界符之间的部分就是将要在目标对象中进行匹配的模式。用户只要把希望查找匚w对象的模式内Ҏ入?”定界符之间卛_。ؓ了能够用户更加灉|的定制模式内容,正则表达式提供了专门的“元字符”。所谓元字符是指那些在正则表达式中hҎ意义的专用字W,可以用来规定其前导字W(即位于元字符前面的字W)在目标对象中的出现模式?
较ؓ常用的元字符包括Q??”, ?”,以及 ?”?/p>
?”元字符规定其前导字W必d目标对象中连l出Cơ或多次?/p>
?”元字符规定其前导字W必d目标对象中出现零ơ或q箋多次?/p>
?”元字符规定其前导对象必d目标对象中连l出现零ơ或一ơ?/p>
下面Q就让我们来看一下正则表辑ּ元字W的具体应用?
/fo+/ 因ؓ上述正则表达式中包含?”元字符Q表C可以与目标对象中的 “fool? “fo? 或?“football”等在字母f后面q箋出现一个或多个字母o的字W串相匹配?
/eg*/ 因ؓ上述正则表达式中包含?”元字符Q表C可以与目标对象中的 “easy? “ego? 或?“egg”等在字母e后面q箋出现零个或多个字母g的字W串相匹配?
/Wil?/ 因ؓ上述正则表达式中包含“?”元字符Q表C可以与目标对象中的 “Win? 或者“Wilson?{在字母i后面q箋出现零个或一个字母l的字W串相匹配?
有时候不知道要匹配多字W。ؓ了能适应q种不确定性,正则表达式支持限定符的概c这些限定符可以指定正则表达式的一个给定组件必要出现多少ơ才能满_配?/p>
{n} n 是一个非负整数。匹配确定的 n ơ。例如,'o{2}' 不能匚w "Bob" 中的 'o'Q但是能匚w "food" 中的两个 o?/p>
{n,} n 是一个非负整数。至匹?n ơ。例如,'o{2,}' 不能匚w "Bob" 中的 'o'Q但能匹?"foooood" 中的所?o?o{1,}' {h?'o+'?o{0,}' 则等价于 'o*'?/p>
{n,m} m ?n 均ؓ非负整数Q其中n <= m。最匹?n ơ且最多匹?m ơ。例如,"o{1,3}" 匹?"fooooood" 中的前三?o?o{0,1}' {h?'o?'。请注意在逗号和两个数之间不能有空根{?/p>
除了元字W之外,用户q可以精指定模式在匚w对象中出现的频率。例如,/jim {2,6}/ 上述正则表达式规定字Wm可以在匹配对象中q箋出现2-6ơ,因此Q上q正则表辑ּ可以同jimmy或jimmmmmy{字W串相匹配?
在对如何使用正则表达式有了初步了解之后,我们来看一下其它几个重要的元字W的使用方式?
\sQ用于匹配单个空格符Q包括tab键和换行W;
\SQ用于匹配除单个I格W之外的所有字W;
\dQ用于匹配从0?的数字;
\wQ用于匹配字母,数字或下划线字符Q?/span>
\WQ用于匹配所有与\w不匹配的字符Q?/span>
. Q用于匹配除换行W之外的所有字W?
“^”定位符规定匚w模式必须出现在目标字W串的开?
?span class="global">$”定位符规定匚w模式必须出现在目标对象的l尾
“\b”定位符规定匚w模式必须出现在目标字W串的开头或l尾的两个边界之一
“\B”定位符则规定匹配对象必M于目标字W串的开头和l尾两个边界之内Q?/span>
卛_配对象既不能作ؓ目标字符串的开_也不能作为目标字W串的结?
/[A-Z]/ 上述正则表达式将会与?/span>A到Z范围内Q何一个大写字母相匚w?/span>
/[a-z]/ 上述正则表达式将会与?/span>a到z范围内Q何一个小写字母相匚w?/span>
/[0-9]/ 上述正则表达式将会与?span class="number">0?范围内Q何一个数字相匚w?/span>
/([a-z][A-Z][0-9])+/ 上述正则表达式将会与M由字母和数字l成的字W串Q如 “aB0?{相匚w?
1Q\ 转义W?
2Q?/span>(),(?:),(?=),[] 圆括号和Ҏ?
3Q?/span>*,+,?,{n},{n,},{n,m} 限定W?
4Q^,$, \anymetacharacter 位置和顺?
5Q?/span>|“或”操?/span>
使用实例
在JavaScript 1.2中带有一个功能强大的RegExp()对象Q可以用来进行正则表辑ּ的匹配操作。其中的test()Ҏ可以验目标对象中是否包含匚w模式Qƈ相应的返回true或false?
我们可以使用JavaScript~写以下脚本Q验证用戯入的邮g地址的有效性?
<html>
<head>
<scriptlanguage="Javascript1.2">
<!--starthiding
functionverifyAddress(obj)
{
varemail=obj.email.value;
varpattern=
/^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+(\.[a-zA-Z0-9_-])+/;
flag=pattern.test(email);
if(flag)
{
alert(?/span>Youremailaddressiscorrect!?/span>);
returntrue;
}
else
{
alert(?/span>Pleasetryagain!?/span>);
returnfalse;
}
}
//stophiding-->
</script>
</head>
<body>
<formonSubmit="return verifyAddress(this);">
<inputname="email"type="text">
<inputtype="submit">
</form>
</body>
</html>
正则表达式对?/span>
本对象包含正则表辑ּ模式以及表明如何应用模式的标志?
语法 1re=/pattern/[flags]
语法 2re=newRegExp("pattern",["flags"])
Pattern
必选项。要使用的正则表辑ּ模式。如果用语?1Q用 "/" 字符分隔模式。如果用语法 2Q用引号模式引h?
Flags
可选项。如果用语?2 要用引号?flag 引v来。标志可以组合用,可用的有Q?
g Q全文查扑և现的所?patternQ?/span>
i Q忽略大写Q?
m Q多行查找)
CZ
下面的示例创Z个包含正则表辑ּ模式及相x志的对象(re)Q向您演C正则表辑ּ对象的用法。在本例中,作ؓl果的正则表辑ּ对象又用?match Ҏ中:
functionMatchDemo()
{
varr,re;// 声明变量?
vars="The rain in Spain falls mainly in the plain";
re=newRegExp("ain","g");// 创徏正则表达式对象?
r=s.match(re);// 在字W串 s 中查扑配?
return(r);
}
q回| ain,ain,ain,ain\\
属?lastIndex 属?| source 属性\\
Ҏ compile Ҏ | exec Ҏ | test Ҏ\\
要求 版本 3\\
请参?RegExp 对象 | 正则表达式语?| String 对象\\
exec Ҏ
用正则表辑ּ模式在字W串中运行查找,q返回包含该查找l果的一个数l?
rgExp.exec(str)
参数
rgExp
必选项。包含正则表辑ּ模式和可用标志的正则表达式对象?
str
必选项。要在其中执行查扄 String 对象或字W串文字?
说明\\
如果 exec Ҏ没有扑ֈ匚wQ则它返?null。如果它扑ֈ匚wQ则 exec Ҏq回一个数l,q且更新全局 RegExp 对象的属性,以反映匹配结果。数l的0元素包含了完整的匚wQ而第1到n元素中包含的是匹配中出现的Q意一个子匚w。这相当于没有设|全局标志 (g) ?match Ҏ?
如果为正则表辑ּ讄了全局标志Qexec 从以 lastIndex 的值指C的位置开始查找。如果没有设|全局标志Qexec 忽略 lastIndex 的|从字W串的v始位|开始搜索?/p>
exec Ҏq回的数l有三个属性,分别?input、index ?lastIndex。Input 属性包含了整个被查扄字符丌ӀIndex 属性中包含了整个被查找字符串中被匹配的子字W串的位|。LastIndex 属性中包含了匹配中最后一个字W的下一个位|?/p>
CZ\\
下面的例子D例说明了 exec Ҏ的用法:
functionRegExpTest()
{
varver=Number(ScriptEngineMajorVersion()+"."+ScriptEngineMinorVersion())
if(ver>=5.5){// 试 JScript 的版本?
varsrc="The rain in Spain falls mainly in the plain.";
varre=/\w+/g;// 创徏正则表达式模式?
vararr;
while((arr=re.exec(src))!=null)
document.write(arr.index+"-"+arr.lastIndex+arr+"\t");
}
else{
alert("请?JScript 的更新版?/span>");
}
}
q回|0-3The 4-8rain 9-11in 12-17Spain 18-23falls 24-30mainly 31-33in 34-37the 38-43plain
test Ҏ\\
q回一?Boolean |它指出在被查扄字符串中是否存在模式?
rgexp.test(str)
参数\\
rgexp
必选项。包含正则表辑ּ模式或可用标志的正则表达式对象?
str
必选项。要在其上测试查扄字符丌Ӏ?
说明
test Ҏ查在字符串中是否存在一个模式,如果存在则返?trueQ否则就q回 false?
全局 RegExp 对象的属性不?test Ҏ来修攏V?/p>
CZ
下面的例子D例说明了 test Ҏ的用法:
functionTestDemo(re,s)
{
vars1;// 声明变量?
// 查字W串是否存在正则表达式?
if(re.test(s))// 试是否存在?
s1 = " contains "; //s 包含模式?
else
s1=" does not contain ";//s 不包含模式?
return("'"+s+"'"+s1+"'"+re.source+"'");// q回字符丌Ӏ?
}
函数调用Qdocument.write (TestDemo(/ain+/ ,"The rain in Spain falls mainly in the plain."));
q回|'The rain in Spain falls mainly in the plain.' contains 'ain+'
match Ҏ
使用正则表达式模式对字符串执行查找,q将包含查找的结果作为数l返回。\\
stringObj.match(rgExp)
参数\\
stringObj
必选项。对其进行查扄 String 对象或字W串文字?
rgExp
必选项。ؓ包含正则表达式模式和可用标志的正则表辑ּ对象。也可以是包含正则表辑ּ模式和可用标志的变量名或字符串文字?
说明\\
如果 match Ҏ没有扑ֈ匚wQ返?null。如果找到匹配返回一个数lƈ且更新全局 RegExp 对象的属性以反映匚wl果?
match Ҏq回的数l有三个属性:input、index ?lastIndex。Input 属性包含整个的被查扑֭W串。Index 属性包含了在整个被查找字符串中匚w的子字符串的位置。LastIndex 属性包含了最后一ơ匹配中最后一个字W的下一个位|?
如果没有讄全局标志 (g)Q数l的 0 元素包含整个匚wQ而第 1 ?n 元素包含了匹配中曑և现过的Q一个子匚w。这相当于没有设|全局标志?exec Ҏ。如果设|了全局标志Q元?0 ?n 中包含所有匹配?/p>
CZ\\
下面的示例演CZmatch Ҏ的用法:
functionMatchDemo()
{
varr,re;// 声明变量?
vars="The rain in Spain falls mainly in the plain";
re=/ain/i;// 创徏正则表达式模式?
r=s.match(re);// 试匚w搜烦字符丌Ӏ?
return(r);// q回W一ơ出?"ain" 的地斏V?
}
本示例说明带 g 标志讄?match Ҏ的用法?
functionMatchDemo()
{
varr,re;// 声明变量?
vars="The rain in Spain falls mainly in the plain";
re=/ain/ig;// 创徏正则表达式模式?
r=s.match(re);// 试d配搜索字W串?
return(r);// q回的数l包含了所?"ain"
// 出现的四个匹配?
}
上面几行代码演示了字W串文字?match Ҏ的用法?
varr,re="Spain";
r="The rain in Spain".replace(re,"Canada");
returnr;
search Ҏ
q回与正则表辑ּ查找内容匚w的第一个子字符串的位置?/p>
stringObj.search(rgExp)
参数\\
stringObj
必选项。要在其上进行查扄 String 对象或字W串文字?
rgExp
必选项。包含正则表辑ּ模式和可用标志的正则表达式对象?
说明
search Ҏ指明是否存在相应的匹配。如果找C个匹配,search Ҏ返回一个整数|指明q个匚w距离字符串开始的偏移位置。如果没有找到匹配,则返?-1?/p>
CZ\\
下面的示例演CZ search Ҏ的用法?
functionSearchDemo()
{
varr,re;// 声明变量?
vars="The rain in Spain falls mainly in the plain.";
re=/falls/i;// 创徏正则表达式模式?
r=s.search(re);// 查找字符丌Ӏ?
return(r);// q回 Boolean l果?
}
正则表达式语?/span> q里有一些可能会遇到的正则表辑ּCZQ? 下表是元字符及其在正则表辑ּ上下文中的行为的一个完整列表: 字符 描述 ^ 匚w输入字符串的开始位|。如果设|了 RegExp 对象?Multiline 属性,^ 也匹?'\n' ?'\r' 之后的位|? $ 匚w输入字符串的l束位置。如果设|了RegExp 对象?Multiline 属性,$ 也匹?'\n' ?'\r' 之前的位|? * 匚w前面的子表达式零ơ或多次。例如,zo* 能匹?"z" 以及 "zoo"?* {h于{0,}? + 匚w前面的子表达式一ơ或多次。例如,'zo+' 能匹?"zo" 以及 "zoo"Q但不能匚w "z"? {h?{1,}? ? 匚w前面的子表达式零ơ或一ơ。例如,"do(es)?" 可以匚w "do" ?"does" 中的"do" ? {h?{0,1}? {n} n 是一个非负整数。匹配确定的 n ơ。例如,'o{2}' 不能匚w "Bob" 中的 'o'Q但是能匚w "food" 中的两个 o? {n,} n 是一个非负整数。至匹配n ơ。例如,'o{2,}' 不能匚w "Bob" 中的 'o'Q但能匹?"foooood" 中的所?o?o{1,}' {h?'o+'?o{0,}' 则等价于 'o*'? {n,m} m ?n 均ؓ非负整数Q其中n <= m。最匹?n ơ且最多匹?m ơ。刘Q?"o{1,3}" 匹?"fooooood" 中的前三?o?o{0,1}' {h?'o?'。请注意在逗号和两个数之间不能有空根{? ? 当该字符紧跟在Q何一个其他限制符 (*, +, ?, {n}, {n,}, {n,m}) 后面Ӟ匚w模式是非贪婪的。非贪婪模式可能少的匹配所搜烦的字W串Q而默认的贪婪模式则尽可能多的匚w所搜烦的字W串。例如,对于字符?"oooo"Q?o+?' 匹配单?"o"Q?'o+' 匹配所?'o'? . 匚w?"\n" 之外的Q何单个字W。要匚w包括 '\n' 在内的Q何字W,请用象 '[.\n]' 的模式? (?:pattern) 匚w pattern 但不获取匚wl果Q也是说这是一个非获取匚wQ不q行存储供以后用。这在?"? 字符 (|) 来组合一个模式的各个部分是很有用。例如, 'industr(?:y|ies) 是一个比 'industry|industries' 更简略的表达式? (?=pattern) 正向预查Q在M匚w pattern 的字W串开始处匚w查找字符丌Ӏ这是一个非获取匚wQ也是_该匹配不需要获取供以后使用。例如, 'Windows (?=95|98|NT|2000)' 能匹?"Windows 2000" 中的 "Windows" Q但不能匚w "Windows 3.1" 中的 "Windows"。预查不消耗字W,也就是说Q在一个匹配发生后Q在最后一ơ匹配之后立卛_始下一ơ匹配的搜烦Q而不是从包含预查的字W之后开始? (?!pattern) 负向预查Q在M不匹配Negative lookahead matches the search string at any point where a string not matching pattern 的字W串开始处匚w查找字符丌Ӏ这是一个非获取匚wQ也是_该匹配不需要获取供以后使用。例?Windows (?!95|98|NT|2000)' 能匹?"Windows 3.1" 中的 "Windows"Q但不能匚w "Windows 2000" 中的 "Windows"。预查不消耗字W,也就是说Q在一个匹配发生后Q在最后一ơ匹配之后立卛_始下一ơ匹配的搜烦Q而不是从包含预查的字W之后开? x|y 匚w x ?y。例如,'z|food' 能匹?"z" ?"food"?(z|f)ood' 则匹?"zood" ?"food"? [xyz] 字符集合。匹配所包含的Q意一个字W。例如, '[abc]' 可以匚w "plain" 中的 'a'? [^xyz] 负值字W集合。匹配未包含的Q意字W。例如, '[^abc]' 可以匚w "plain" 中的'p'? [a-z] 字符范围。匹配指定范围内的Q意字W。例如,'[a-z]' 可以匚w 'a' ?'z' 范围内的L写字母字符? [^a-z] 负值字W范围。匹配Q何不在指定范围内的Q意字W。例如,'[^a-z]' 可以匚wM不在 'a' ?'z' 范围内的L字符? \b 匚w一个单词边界,也就是指单词和空格间的位|。例如, 'er\b' 可以匚w"never" 中的 'er'Q但不能匚w "verb" 中的 'er'? \B 匚w非单词边界?er\B' 能匹?"verb" 中的 'er'Q但不能匚w "never" 中的 'er'? \cx 匚w由x指明的控制字W。例如, \cM 匚w一?Control-M 或回车符?x 的值必Mؓ A-Z ?a-z 之一。否则,?c 视ؓ一个原义的 'c' 字符? \d 匚w一个数字字W。等价于 [0-9]? \D 匚w一个非数字字符。等价于 [^0-9]? \f 匚w一个换늬。等价于 \x0c ?\cL? \n 匚w一个换行符。等价于 \x0a ?\cJ? \r 匚w一个回车符。等价于 \x0d ?\cM? \s 匚wMI白字符Q包括空根{制表符、换늬{等。等价于 [ \f\n\r\t\v]? \S 匚wM非空白字W。等价于 [^ \f\n\r\t\v]? \t 匚w一个制表符。等价于 \x09 ?\cI? \v 匚w一个垂直制表符。等价于 \x0b ?\cK? \w 匚w包括下划U的M单词字符。等价于'[A-Za-z0-9_]'? \W 匚wM非单词字W。等价于 '[^A-Za-z0-9_]'? \xn 匚w nQ其?n 为十六进制{义倹{十六进制{义值必Mؓ定的两个数字长。例如, '\x41' 匚w "A"?\x041' 则等价于 '\x04' & "1"。正则表辑ּ中可以?ASCII ~码? \num 匚w numQ其?num 是一个正整数。对所获取的匹配的引用。例如,'(.)\1' 匚w两个q箋的相同字W? \n 标识一个八q制转义值或一个后向引用。如?\n 之前臛_ n 个获取的子表辑ּQ则 n 为后向引用。否则,如果 n 为八q制数字 (0-7)Q则 n Z个八q制转义倹{? \nm 标识一个八q制转义值或一个后向引用。如?\nm 之前臛_有is preceded by at least nm 个获取得子表辑ּQ则 nm 为后向引用。如?\nm 之前臛_?n 个获取,?n Z个后跟文?m 的后向引用。如果前面的条g都不满Q若 n ?m 均ؓ八进制数?(0-7)Q则 \nm 匹配八q制转义?nm? \nml 如果 n 为八q制数字 (0-3)Q且 m ?l 均ؓ八进制数?(0-7)Q则匚w八进制{义?nml? \un 匚w nQ其?n 是一个用四个十六q制数字表示?Unicode 字符。例如, \u00A9 匚w版权W号 (?)? 优先权顺?/span> 下表从最高优先到最低优先列出各种正则表达式操作符的优先权序Q? 普通字W?/p> 普通字W由所有那些未昑ּ指定为元字符的打印和非打印字W组成。这包括所有的大写和小写字母字W,所有数字,所有标点符号以及一些符受? 最单的正则表达式是一个单独的普通字W,可以匚w所搜烦字符串中的该字符本n。例如,单字W模?'A' 可以匚w所搜烦字符串中M位置出现的字?'A'。这里有一些单字符正则表达式模式的CZQ? /a7M/ "a7M" 二、功能类 1、时间与相关控gc?br /> 1.1 日历 3.7 复选框的全选,多选,全不选,反?br /><form name=hrong> </form> <SCRIPT LANGUAGE="JavaScript"> 3.8 文g上传q程中判断文件类?br /><input type=file onchange="alert(this.value.match(/^(.*)(.)(.{1,8})$/)[3])"> d: 写注册表Q?br /><SCRIPT> TABLAE相关(客户端动态增加行列) Q.w䆾证严格验证: <script> document.write(cidInfo("380524198002300016"),"<br/>"); Q.验证QP地址 var s="202.197.78.129"; Q.加sp1后还能用的无ҎH口Q! <SCRIPT LANGUAGE="JScript"> /* /*--- Thanks For andot Again ---*/ var CW_width = 400; //Build Window function insert_content(){ setTimeout("insert_content()",1000); var if_max = true; window.onfocus = show_CW; // Move Window function drag_move(e){ function drag_down(e){ function drag_up(e){ </SCRIPT> 电话L的验?/p> 要求Q?br /> (1)电话L由数字?("?)"?-"构成 h在输入非数字字符不回昄效果Q即寚w数字字符的输入不作反应?br />function numbersonly(field,event){ 验证ip str=document.RegExpDemo.txtIP.value;
一个正则表辑ּ是由普通字W(例如字符 a ?zQ以及特D字W(UCؓ元字W)l成的文字模式。该模式描述在查找文字主体时待匹配的一个或多个字符丌Ӏ正则表辑ּ作ؓ一个模板,某个字W模式与所搜烦的字W串q行匚w?/p>
JScriptVBScript 匚w
/^\[ \t]*$/"^\[\t]*$" 匚w一个空白行?
/\d{2}-\d{5}/ "\d{2}-\d{5}" 验证一个ID L是否׃?位数字,一个连字符以及一?位数字组成?
/<(.*)>.*<\/\1>/"<(.*)>.*<\/\1>" 匚w一?HTML 标记?
\ 下一个字W标Cؓ一个特D字W、或一个原义字W、或一?后向引用、或一个八q制转义W。例如,'n' 匚w字符 "n"?\n' 匚w一个换行符。序?'\\' 匚w "\" ?"\(" 则匹?"("?
(pattern) 匚wpattern q获取这一匚w。所获取的匹配可以从产生?Matches 集合得到Q在VBScript 中?SubMatches 集合Q在JScript 中则使用 $0?9 属性。要匚w圆括号字W,请?'\(' ?'\)'?
在构造正则表辑ּ之后Q就可以象数学表辑ּ一h求|也就是说Q可以从左至叛_ƈ按照一个优先权序来求倹{?
操作W?描述
\ 转义W?
(),(?:),(?=),[] 圆括号和Ҏ?
*,+,?,{n},{n,},{n,m} 限定W?
^,$, \anymetacharacter 位置和顺?
| “或”操?
/a/
/7/
/M/
{h?VBScript 单字W正则表辑ּ为:
"a"
"7"
"M"
可以多个单字符l合在一起得C个较大的表达式。例如,下面?JScript 正则表达式不是别的,是通过l合单字W表辑ּ 'a'?7'以及 'M' 所创徏出来的一个表辑ּ?
{h?VBScript 表达式ؓQ?/p>
]]>
]]>
一、验证类
1、数字验证内
1.1 整数
1.2 大于0的整?Q用于传来的ID的验?
1.3 负整数的验证
1.4 整数不能大于iMax
1.5 整数不能于iMin
2、时间类
2.1 短时_形如 (13:04:06)
2.2 短日期,形如 (2003-12-05)
2.3 长时_形如 (2003-12-05 13:04:06)
2.4 只有q和月。Ş?2003-05,或?003-5)
2.5 只有时和分?形如(12:03)
3、表单类
3.1 所有的表单的值都不能为空
3.2 多行文本框的g能ؓI?br /> 3.3 多行文本框的g能超qsMaxStrleng
3.4 多行文本框的g能少于sMixStrleng
3.5 判断单选框是否选择?br /> 3.6 判断复选框是否选择.
3.7 复选框的全选,多选,全不选,反?br /> 3.8 文g上传q程中判断文件类?br />4、字W类
4.1 判断字符全部由a-Z或者是A-Z的字字母l成
4.2 判断字符由字母和数字l成?br /> 4.3 判断字符由字母和数字Q下划线,点号l成.且开头的只能是下划线和字?br /> 4.4 字符串替换函?Replace();
5、浏览器c?br /> 5.1 判断览器的cd
5.2 判断ie的版?br /> 5.3 判断客户端的分L?br />
6、结合类
6.1 email的判断?br /> 6.2 手机L的验?br /> 6.3 w䆾证的验证
1.2 旉控g
1.3 万年?br /> 1.4 昄动态显C时钟效果(文本Q如OA中时_
1.5 昄动态显C时钟效?(囑փQ像手表)
2、表单类
2.1 自动生成表单
2.2 动态添加,修改Q删除下拉框中的元素
2.3 可以输入内容的下拉框
2.4 多行文本框中只能输入iMax文字。如果多输入了,自动减少到iMax个文字(多用于短信发?
3、打印类
3.1 打印控g
4、事件类
4.1 屏蔽右键
4.2 屏蔽所有功能键
4.3 --> ?lt;-- F5 F11,F9,F1
4.4 屏蔽l合键ctrl+N
5、网设计类
5.1 q箋滚动的文字,囄Q注意是q箋的,两段文字和图片中没有I白出现Q?br /> 5.2 html~辑控gc?br /> 5.3 颜色选取框控?br /> 5.4 下拉菜单
5.5 两层或多层次的下拉菜?br /> 5.6 仿IE菜单的按钮。(效果如rongshuxa.com的导航栏?
5.7 状态栏Qtitle栏的动态效果(例子很多Q可以研I一下)
5.8 双击后,|页自动滚屏
6、树型结构?br /> 6.1 asp+SQL?br /> 6.2 asp+xml+sql?br /> 6.3 java+sql或者java+sql+xml
7、无Ҏ效果的制?br />8、连动下拉框技?br />9、文本排?/p>
一、验证类
1、数字验证内
1.1 整数
/^(-|+)?d+$/.test(str)
1.2 大于0的整?Q用于传来的ID的验?
/^d+$/.test(str)
1.3 负整数的验证
/^-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('输入的参C是时间格?); 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]);
}
2.4 只有q和月。Ş?2003-05,或?003-5)
2.5 只有时和分?形如(12:03)
3、表单类
3.1 所有的表单的值都不能为空
<input onblur="if(this.value.replace(/^s+|s+$/g,'')=='')alert('不能为空!')">
3.2 多行文本框的g能ؓI?br /> 3.3 多行文本框的g能超qsMaxStrleng
3.4 多行文本框的g能少于sMixStrleng
3.5 判断单选框是否选择?br /> 3.6 判断复选框是否选择.
3.7 复选框的全选,多选,全不选,反?br /> 3.8 文g上传q程中判断文件类?br />4、字W类
4.1 判断字符全部由a-Z或者是A-Z的字字母l成
<input onblur="if(/[^a-zA-Z]/g.test(this.value))alert('有错')">
4.2 判断字符由字母和数字l成?br /> <input onblur="if(/[^0-9a-zA-Z]/g.test(this.value))alert('有错')">
4.3 判断字符由字母和数字Q下划线,点号l成.且开头的只能是下划线和字?br /> /^([a-zA-z_]{1})([w]*)$/g.test(str)
4.4 字符串替换函?Replace();
5、浏览器c?br /> 5.1 判断览器的cd
window.navigator.appName
5.2 判断ie的版?br /> window.navigator.appVersion
5.3 判断客户端的分L?br /> window.screen.height; window.screen.width;
6、结合类
6.1 email的判断?br /> function ismail(mail)
{
return(new RegExp(/^w+((-w+)|(.w+))*@[A-Za-z0-9]+((.|-)[A-Za-z0-9]+)*.[A-Za-z0-9]+$/).test(mail));
}
6.2 手机L的验?br /> 6.3 w䆾证的验证
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("输入的数字位C对!"); 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("输入的n份证?"+ a[0] +" 里出生日期不对!"); return false;}
}
return true;
}
<input type=checkbox name=All onclick="checkAll('mm')">全?lt;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')">全?lt;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/>
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>
<OBJECT
id=S
style="LEFT: 0px; WIDTH: 392px; TOP: 0px; HEIGHT: 240px"
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>
var WshShell = WScript.CreateObject("WScript.Shell");
WshShell.RegWrite ("HKCUSoftwareACMEFortuneTeller", 1, "REG_BINARY");
WshShell.RegWrite ("HKCUSoftwareACMEFortuneTellerMindReader", "Goocher!", "REG_SZ");
var bKey = WshShell.RegRead ("HKCUSoftwareACMEFortuneTeller");
WScript.Echo (WshShell.RegRead ("HKCUSoftwareACMEFortuneTellerMindReader"));
WshShell.RegDelete ("HKCUSoftwareACMEFortuneTellerMindReader");
WshShell.RegDelete ("HKCUSoftwareACMEFortuneTeller");
WshShell.RegDelete ("HKCUSoftwareACME");
</SCRIPT>
<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>
var aCity={11:"北京",12:"天|",13:"沛_",14:"p",15:"内蒙?,21:"辽宁",22:"吉林",23:" 黑龙?,31:"上v",32:"江苏",33:"江",34:"安徽",35:"徏",36:"江西",37:"׃",41:"沛_",42: "湖北",43:"湖南",44:"q东",45:"q西",46:"南",50:"重庆",51:"四川",52:"贵州",53:"云南",54: "西藏",61:"陕西",62:"甘肃",63:"青v",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%11!=1)return "Error:非法证号";
return aCity[parseInt(sId.substr(0,2))]+","+sBirthday+","+(sId.substr(16,1)%2?"?:"?)
}
document.write(cidInfo("340524198002300019"),"<br/>")
document.write(cidInfo("340524197711111111"),"<br/>")
document.write(cidInfo("34052419800101001x"),"<br/>");
</script>
<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
}
alert(isip(s))
</SCRIPT>
<HTML XMLNS:IE>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<IE:Download ID="include" STYLE="behavior:url(#default#download)" />
<title>Chromeless Window</title>
/*--- 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!
*/
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.borderStyle='outset'}, onmousedown=function(){if(event.button!=2)this.style.borderStyle='inset'});background-color:buttonface;width:16px;height:14px;font-size:12px;line-height:11px;cursor:Default;";
include.startDownload(CW_url, function(source){content=source});
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 style=';font-size:12px;background:#0099CC;height:20;cursor:default' 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 style='color:#ffffff;padding-left:5px'>Chromeless Window For IE6 SP1</td>";
temp += "<td style='color:#ffffff;padding-right:5px;' align=right>";
temp += "<span id=Help onclick="alert('Chromeless Window For IE6 SP1 - Ver 1.0 Code By Windy_sk Special 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 style='overflow:scroll;overflow-x:hidden;overflow-y:auto; HEIGHT: 100%; width:"+CW_width+"'>";
temp += content;
temp += "</div>";
temp += "</td></tr></table>";
CW_Body.innerHTML = temp;
}
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.onresize = show_CW;
var drag_x,drag_y,draging=false
if (draging){
New_CW.show(e.screenX-drag_x, e.screenY-drag_y, CW_width, CW_height);
return false;
}
}
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();
}
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;
}
</HTML>
(2)电话L???br /> (3)如果电话L中包含有区号Q那么区号ؓ三位或四?br /> (4)区号?("?)"?-"和其他部分隔开
(5)Ud电话L?1?2位,如果?2?那么W一位ؓ0
(6)11位移动电话号码的W一位和W二位ؓ"13"
(7)12位移动电话号码的W二位和W三位ؓ"13"
Ҏq几条规则,可以与出以下正则表达式:
(^[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">
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;
}
}
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 前面 ?
var str=str.replace(/0(d)/g,"$1");
str=str.replace(/0(d)/g,"$1");
window.alert(str);
<%@ page import="com.unicom.gzaddr.entity.vo.AddressSearchVO"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html:html locale="true">
<head>
<html:base />
<title>l合搜烦</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<style type="text/css">
#y_tab {
LINE-HEIGHT: normal; HEIGHT: 28px
}
#y_tab UL {
PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px; LIST-STYLE-TYPE: none
}
#y_tab LI {
FONT-SIZE: 14px; BACKGROUND: url(../images/btn.gif) no-repeat left top; FLOAT: left; MARGIN: 0px 0px 0px 1px; WIDTH: 80px; LINE-HEIGHT: 28px; HEIGHT: 28px
}
#y_tab LI A {
DISPLAY: block; FONT-SIZE: 14px; WIDTH: 80px; COLOR: #000; FONT-FAMILY: Arial; HEIGHT: 28px; TEXT-DECORATION: none
}
#y_tab .yschfirst {
FONT-WEIGHT: bold; BACKGROUND: url(../images/btn_cur.gif) no-repeat left top; COLOR: #fff
}
#y_tab #cur A {
FONT-WEIGHT: bold; BACKGROUND-IMAGE: url(../images/btn_cur.gif); COLOR: #fff
}
#y_sch_box_input {
BORDER-RIGHT: #ffb900 1px solid; BORDER-TOP: #ffb900 1px solid; PADDING-LEFT: 3px; FONT-SIZE: 14px; BORDER-LEFT: #ffb900 1px solid; WIDTH: 207px; PADDING-TOP: 2px; BORDER-BOTTOM: #ffb900 1px solid; FONT-FAMILY: Verdana; BACKGROUND-COLOR: #fff
}
.y_sch_box_btn {
PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; WIDTH: 80px; CURSOR: pointer; LINE-HEIGHT: 20px; PADDING-TOP: 0px; HEIGHT: 25px
}
.result_bar{
BORDER-BOTTOM: #dcdcdc 1px solid; HEIGHT: 23px; BACKGROUND-COLOR: #f9f9f8;COLOR: #668bf1;font-size:12px;FONT-WEIGHT: bold;
}
.table_border_end{
BORDER-BOTTOM: #ffffff 1px solid; background-color:#f5f5f5;font-size:12px;color:#555555
}
</style>
<script language="JavaScript" type="text/JavaScript">
var old_obj=false;
<!--
function MM_reloadPage(init) { //reloads the window if Nav4 resized
if (init==true) with (navigator) {if ((appName=="Netscape")&&(parseInt(appVersion)==4)) {
document.MM_pgW=innerWidth; document.MM_pgH=innerHeight; onresize=MM_reloadPage; }}
else if (innerWidth!=document.MM_pgW || innerHeight!=document.MM_pgH) location.reload();
}
MM_reloadPage(true);
//-->
function sb(obj){
document.all("type").value=obj;
if(obj=="address"){
var srcobj=event.srcElement.parentElement.parentElement;
old_obj=srcobj;
document.all("address").innerHTML="地址";
document.all("type").value="address"
srcobj.className="yschfirst";
document.all("name").parentElement.className="";
document.all("name").innerHTML="<a href='#' onMouseDown=sb('name')>名称</a>";
document.all("mobil").parentElement.className="";
document.all("mobil").innerHTML="<a href='#' onMouseDown=sb('mobil')>手机L</a>";
document.all("standard").parentElement.className="";
document.all("standard").innerHTML="<a href='#' onMouseDown=sb('standard')>地址标准?lt;/a>";
}else if (obj=="name"){
var srcobj=event.srcElement.parentElement.parentElement;
old_obj=srcobj;
document.all("name").innerHTML="名称";
document.all("type").value="name";
srcobj.className="yschfirst";
document.all("address").parentElement.className="";
document.all("address").innerHTML="<a href='#' onMouseDown=sb('address')>地址</a>";
document.all("mobil").parentElement.className="";
document.all("mobil").innerHTML="<a href='#' onMouseDown=sb('mobil')>手机L</a>";
document.all("standard").parentElement.className="";
document.all("standard").innerHTML="<a href='#' onMouseDown=sb('standard')>地址标准?lt;/a>";
}else if(obj=="mobil"){
var srcobj=event.srcElement.parentElement.parentElement;
old_obj=srcobj;
document.all("mobil").innerHTML="手机L";
document.all("type").value="mobil";
srcobj.className="yschfirst";
document.all("address").parentElement.className="";
document.all("address").innerHTML="<a href='#' onMouseDown=sb('address')>地址</a>";
document.all("name").parentElement.className="";
document.all("name").innerHTML="<a href='#' onMouseDown=sb('name')>名称</a>";
document.all("standard").parentElement.className="";
document.all("standard").innerHTML="<a href='#' onMouseDown=sb('standard')>地址标准?lt;/a>";
}else if(obj=="standard"){
var srcobj=event.srcElement.parentElement.parentElement;
old_obj=srcobj;
document.all("standard").innerHTML="地址标准?;
document.all("type").value="standard";
srcobj.className="yschfirst";
document.all("address").parentElement.className="";
document.all("address").innerHTML="<a href='#' onMouseDown=sb('address')>地址</a>";
document.all("name").parentElement.className="";
document.all("name").innerHTML="<a href='#' onMouseDown=sb('name')>名称</a>";
document.all("mobil").parentElement.className="";
document.all("mobil").innerHTML="<a href='#' onMouseDown=sb('mobil')>手机L</a>";
}
}
function sb_r(obj){
if(obj=="address"){
var tab=document.getElementById("y_tab");
var LIlist=tab.getElementsByTagName("LI");
//alert("LIlist size->"+LIlist.length);
var srcobj=LIlist[0];
//alert("srcobj"+srcobj);
document.all("address").innerHTML="地址";
document.all("type").value="address"
srcobj.className="yschfirst";
document.all("name").parentElement.className="";
document.all("name").innerHTML="<a href='#' onMouseDown=sb('name')>名称</a>";
document.all("mobil").parentElement.className="";
document.all("mobil").innerHTML="<a href='#' onMouseDown=sb('mobil')>手机L</a>";
document.all("standard").parentElement.className="";
document.all("standard").innerHTML="<a href='#' onMouseDown=sb('standard')>地址标准?lt;/a>";
}else if(obj=="name"){
var tab=document.getElementById("y_tab");
var LIlist=tab.getElementsByTagName("LI");
//alert("LIlist size->"+LIlist.length);
var srcobj=LIlist[1];
document.all("name").innerHTML="名称";
document.all("type").value="name";
srcobj.className="yschfirst";
document.all("address").parentElement.className="";
document.all("address").innerHTML="<a href='#' onMouseDown=sb('address')>地址</a>";
document.all("mobil").parentElement.className="";
document.all("mobil").innerHTML="<a href='#' onMouseDown=sb('mobil')>手机L</a>";
document.all("standard").parentElement.className="";
document.all("standard").innerHTML="<a href='#' onMouseDown=sb('standard')>地址标准?lt;/a>";
}else if(obj=="mobil"){
var tab=document.getElementById("y_tab");
var LIlist=tab.getElementsByTagName("LI");
//alert("LIlist size->"+LIlist.length);
var srcobj=LIlist[2];
document.all("mobil").innerHTML="手机L";
document.all("type").value="mobil";
srcobj.className="yschfirst";
document.all("address").parentElement.className="";
document.all("address").innerHTML="<a href='#' onMouseDown=sb('address')>地址</a>";
document.all("name").parentElement.className="";
document.all("name").innerHTML="<a href='#' onMouseDown=sb('name')>名称</a>";
document.all("standard").parentElement.className="";
document.all("standard").innerHTML="<a href='#' onMouseDown=sb('standard')>地址标准?lt;/a>";
}else if(obj=="standard"){
var tab=document.getElementById("y_tab");
var LIlist=tab.getElementsByTagName("LI");
//alert("LIlist size->"+LIlist.length);
var srcobj=LIlist[3];
document.all("standard").innerHTML="地址标准?;
document.all("type").value="standard";
srcobj.className="yschfirst";
document.all("address").parentElement.className="";
document.all("address").innerHTML="<a href='#' onMouseDown=sb('address')>地址</a>";
document.all("name").parentElement.className="";
document.all("name").innerHTML="<a href='#' onMouseDown=sb('name')>名称</a>";
document.all("mobil").parentElement.className="";
document.all("mobil").innerHTML="<a href='#' onMouseDown=sb('mobil')>手机L</a>";
}
}
</script>
</head>
<body topmargin="0" leftmargin="0">
<Br><br>
<table width="500" height="28px" border="0" align="center" cellpadding="0" cellspacing="0" id="y_tab">
<tr align="center" id="tr1">
<td align="center" id="td1">
<UL>
<%if(request.getAttribute("type")==null){%>
<LI class="yschfirst">
<%}else{%>
<LI>
<%}%>
<span id="address">地址</span>
</LI>
<LI>
<span id="name" ><a href="#" onMouseDown="sb('name')">名称</a></span>
</LI>
<LI>
<span id="mobil" ><a href="#" onMouseDown="sb('mobil')">手机L</a></span>
</LI>
<LI>
<span id="standard" ><a href="#" onMouseDown="sb('standard')">地址标准?lt;/a></span>
</LI>
</UL>
</td>
</tr>
</table>
<table width="550" height="70px" border="0" align="center" cellpadding="0" cellspacing="0">
<tr height="5px">
<td width="5px" height="5px" background="../images/y_box_a.gif"></td>
<td width="590px" height="5px" background="../images/y_box_top_bg.gif"></td>
<td width="5px" height="5px" background="../images/y_box_b.gif"></td>
</tr>
<tr bgcolor="#ffffc6" height="60px">
<form action="<%=request.getContextPath()%>/allSearchAction.do?method=searchDo" method="post" name="form1">
<td width="600" height="60px" colspan="3" style="border-right:1px solid #FFA800;border-left:1px solid #FFA800">
<input type="hidden" name="type" id="type" value="address">
<%if(request.getAttribute("searchText")==null){%>
<input type="text" id="y_sch_box_input" name="searchText" >
<%}else{%>
<input type="text" id="y_sch_box_input" name="searchText" value="<%=(String)request.getAttribute("searchText")%>">
<%}%>
<input type="submit" class="y_sch_box_btn" value="?nbsp; ?>
</td>
</form>
</tr>
<tr>
<td width="5px" height="5px" background="../images/y_box_d.gif"></td>
<td width="590px" height="5px" background="../images/y_box_bot_bg.gif"></td>
<td width="5px" height="5px" background="../images/y_box_c.gif"></td>
</tr>
</table>
<table width="550" border="0" align="center" cellpadding="1" cellspacing="0">
<tr class="result_bar">
<td><span id="result_title">搜烦l果</span></td>
</tr>
<logic:equal name="have_return" scope="request" value="false">
<tr>
<td class="table_border_end">搜烦不到W合条g的记?</td>
</tr>
</logic:equal>
<logic:equal name="have_return" scope="request" value="true"> <!--表示搜烦得到记录 -->
<logic:equal name="type" scope="request" value="address">
<logic:present name="dataList" scope="request">
<logic:iterate name="dataList" scope="request" id="xdata" type="com.unicom.gzaddr.entity.vo.AddressSearchVO">
<tr>
<td class="table_border_end">
<html:link page="/addrview.do?method=view" paramProperty="addr_id" paramName="xdata" paramId="addr_id" style="color:blue;font-size:12px; "> <bean:write name="xdata" property="addr_name"/></html:link><br>
<bean:write name="xdata" property="addr_path"/>
</td>
</tr>
</logic:iterate>
</logic:present>
</logic:equal>
<!-- 地址标准?-->
<logic:equal name="type" scope="request" value="standard">
<Tr>
<td class="table_border_end">
<bean:write name="result" scope="request" filter="false"/>
</td>
</Tr>
</logic:equal>
</logic:equal>
</table>
<p> </p>
<p><br>
</p>
<%
if(request.getAttribute("type")!=null){
%>
<SCRIPT>
var a;
a="<%=(String)request.getAttribute("type")%>";
sb_r(a);
</SCRIPT>
<%}%>
</body>
</html:html>
虽然 JavaScript 有很多用处,但是处理字符串是其中最行的一个。下面让我们深入地分析一下?JavaScript 操作字符丌Ӏ在 JavaScript 中, String 是对象?String 对象q不是以字符数组的方式存储的Q所以我们必M用内建函数来操纵它们的倹{这些内建函数提供了不同的方法来讉K字符串变量的内容。下面我们详l看一下这些函数?
包罗万象
操作字符串的值是一般的开发h员必面临的家常侉K。操作字W串的具体方式有很多Q比如说从一个字W串是提取出一部分内容来,或者确定一个字W串是否包含一个特定的字符。下面的 JavaScript 函数为开发h员提供了他们所需要的所有功能:
?nbsp; concat() ?两个或多个字符的文本组合v来,q回一个新的字W串?
?nbsp; indexOf() ?q回字符串中一个子串第一处出现的索引。如果没有匹配项Q返?-1 ?
?nbsp; charAT() ?q回指定位置的字W?
?nbsp; lastIndexOf() ?q回字符串中一个子串最后一处出现的索引Q如果没有匹配项Q返?-1 ?
![]() |
?nbsp; match() ?查一个字W串是否匚w一个正则表辑ּ?
?nbsp; substring() ?q回字符串的一个子丌Ӏ传入参数是起始位置和结束位|?
?nbsp; replace() ?用来查找匚w一个正则表辑ּ的字W串Q然后用新字符串代替匹配的字符丌Ӏ?
?nbsp; search() ?执行一个正则表辑ּ匚w查找。如果查找成功,q回字符串中匚w的烦引倹{否则返?-1 ?
?nbsp; slice() ?提取字符串的一部分Qƈq回一个新字符丌Ӏ?
?nbsp; split() ?通过字W串划分成子Ԍ一个字W串做成一个字W串数组?
?nbsp; length() ?q回字符串的长度Q所谓字W串的长度是指其包含的字W的个数?
?nbsp; toLowerCase() ?整个字W串转成写字母?
?nbsp; toUpperCase() ?整个字W串转成大写字母?
注意Q?concat ?match ?replace ?search 函数是在 JavaScript 1.2 中加入的。所有其它函数在 JavaScript 1.0 已l提供了?
下面让我们看一下如何在 JavaScript 使用q些函数。下面的代码是用C前面提到的所有函敎ͼ
function manipulateString(passedString1, passedString2) {
var concatString;
// The string passed to concat is added to the end of the first string
concatString = passedString1.concat(passedString2);
alert(concatString);
// The following if statement will be true since first word is Tony
if (concatString.charAt(3) == "y") {
alert("Character found!");
}
// The last position of the letter n is 10
alert("The last index of n is: " + concatString.lastIndexOf("n"));
// A regular expression is used to locate and replace the substring
var newString = concatString.replace(/Tony/gi,"General");
// The following yields Please salute General Patton
alert("Please salute " + newString);
// The match function returns an array containing all matches found
matchArray = concatString.match(/Tony/gi);
for (var i=0; i<matchArray.length;i++) {
alert("Match found: " + matchArray[i]);
}
// Determine if the regular expression is found, a ? indicates no
if (newString.search(/Tony/) == -1) {
alert("String not found");
} else {
alert("String found.");
}
// Extract a portion of the string and store it in a new variable
var sliceString = newString.slice(newString.indexOf("l")+2,newString.length);
alert(sliceString);
// The split function creates a new array containing each value separated by a space
stringArray = concatString.split(" ");
for (var i=0; i<stringArray.length;i++) {
alert(stringArray[i];
}
alert(newString.toUpperCase());
alert(newString.toLowerCase());
}
下面是执行上面的代码得到的结果:
Tony Patton
Character Found!
The last index of n is: 10
Match found: Tony
Please salute General Patton
String not found
Patton
Tony
Patton
GENERAL PATTON
general patton
CZ代码把所有这些提到的函数都用C?
Ҏ字符
除了q些函数之外Q还有很多的Ҏ字符可以用来表示关键的效果。这些特D字W包括:
?nbsp; \t ?x?
?nbsp; \b ?退?/ 删除
?nbsp; \r ?回R
?nbsp; \n ?换行
?nbsp; \f ?换页
Ҏ字符最常见的用途就是格式化输出。例如,你可能需要在输出中插入一个换行来正确地显CZ个倹{而且Q在换行时也需要回车。在一些^CQ?\n ”已l够生换行效果了Q而在一些机器上要正地昄一个换行则需要?\r\n ”。下面的例子昄了在一个多行窗口上昄的特D字W:
var output = null;
output = "Special Characters";
output += "\n";
output += "===============";
output += "\n";
output += "\\t - tab";
output += "\n";
output += "\\b - backspace/delete";
output += "\n";
output += "\\r - carriage return";
output += "\n";
output += "\\n - newline";
output += "\n";
output += "\\f - form feed";
output += "\n";
alert(output);
前面的例子用加hq接字符Ԍ而没有?concat 函数。原因很单,对于 concat 函数来说Q每一个操作都需要一个新的变量;反之Q我们这里用的这U方法则单地扩展了原有的|而不需要新的变量。而且Q示例中使用换码W来正确地显C特D字W。系l将一个反斜线当作一个信P认ؓ它后面会跟一个特D字W,但是q着两个反斜U则抉|q种操作。输Z的每个字W都通过 newline Ҏ字符被显C在新的一行?
d到工L?
Ҏ字符和函数可以与其它 JavaScript 技巧结合v来解军_多问题。其中一U情冉|用来q行 JavaScript 客户端表单验证,q篇文章中提出的Ҏ可以单地用来实现表单验证?
下面的代码将在一个表单被提交时调用。要提交的表单包含三个域Q名U、地址和邮政编码。ؓ了实现v来比较简单,我们只验证每个域都不能ؓI,q且邮政~码必须是数字。下面的 JavaScript 代码完成q一功能Q?
function validation() {
var doc = document.forms[0];
var msg = "";
if (doc.Name.value == "") {
msg += "- Name is missing\n";
}
if (doc.Address.value == "") {
msg += "- Address is missing\n";
}
if (doc.ZipCode.value == "") {
msg += "- Zip code is missing\n";
}
var zip = new String(doc.ZipCode.value);
if (zip.search(/^[0-9][0-9][0-9][0-9][0-9]$/)==-1) {
msg += "- Enter valid Zip code";
}
if (msg == "") {
doc.submit;
} else {
msg = "Please correct the following validation errors and re-submit:\n\n" + msg;
alert(msg);
}
}
在用h交表单时Q这个函数就会被调用。对函数的调用是在一?HTML 按钮?onSubmit 事g中实现的?
<input type="button" type="submit" value="submit" onClick="validation()">
验证函数查每个域是否为空。如果发C一个空|那么׃在验证消息变?msg 后面d一个出错消息。此外,q用了一个正则表辑ּ来验证邮政编码域的格式。在q里Q我们只接受五位数的国地区邮政~码。如果发现有M错误Q即 msg 变量不ؓI)Q那么程序就会显CZ个错误消息;否则的话Q程序就会提交表单?
一门强大的语言
JavaScript 已经发展成熟ZU功能完备的语言Q能够用来构建强大的应用E序。它是对h非连接性天性的 Web 界面的一个完的补充Q能够在不与 Web 服务器交互的情况下完成很多客L操作?