代码改变世界

js 验证

2011-02-24 10:24  迪奥  阅读(338)  评论(0编辑  收藏  举报
View Code
1 JS判断字符串格式是否合法 /**
2 * 浏览器脚本函数列表
3 * boolean isNumber(numStr) :判断字符串是否是数值格式
4 * boolean isValidString(szStr) :判断字符串中是否含有非法字符"'\"><"
5 * boolean isBlank(szStr) :判断字符串是否为空字符串(或不包含除空格外的其他字符)
6 * String trim(szStr) :去掉字符串两端的空格
7 * boolean isDateStr(ds) :判断字符串是否为合法的日期格式:YYYY-MM-DD HH:MM:SS
8 * 或 YYYY-MM-DD 或 HH:MM:SS
9 * boolean isDatePart(dateStr) :判断字符串是否为合法的日期格式:YYYY-MM-DD
10 * boolean isTimePart(dateStr) :判断字符串是否为合法的时间格式:HH:MM:SS
11 * boolean chk_email(emailAddress) :判断邮件地址格式是否合法
12 */
13
14 /***********************************************************************
15 * 判断一个字符串是否是数值格式
16 */
17 function isNumber(numStr){
18 return !isNaN(numStr);
19 }
20
21 /***********************************************************************
22 * 判断一个字符串中是否含有下列非法字符
23 */
24 voidChar = "'\"><";
25
26 function isValidString(szStr){
27 for(i = 0 ; i < voidChar.length; i ++){
28 aChar = voidChar.substring(i, i + 1);
29 if(szStr.indexOf(aChar) > -1){
30 return false;
31 }
32 }
33 return true;
34 }
35
36 /***********************************************************************
37 * 判断一个字符串是否为空字符串
38 */
39 function isBlank(szStr){
40 if(szStr.length < 1){
41 return true;
42 }
43
44 for(i = 0; i < szStr.length; i ++){
45 if(szStr.substring(i, i + 1) != ' '){
46 return false;
47 }
48 }
49 return true;
50 }
51
52 /***********************************************************************
53 * 去掉一个字符串两端的空格
54 */
55 function trim(szStr){
56 //去掉字符串头部的空格
57 while(szStr.length > 0){
58 if( szStr.substring(0, 1) != ' '){
59 break;
60 }else{
61 szStr = szStr.substring(1);
62 }
63 }
64
65 //去掉字符串尾部的空格
66 while(szStr.length > 0){
67 if( szStr.substring(szStr.length - 1, szStr.length) != ' '){
68 break;
69 }else{
70 szStr = szStr.substring(0,szStr.length - 1);
71 }
72 }
73 return szStr;
74 }
75
76 /***********************************************************************
77 * 判断一个字符串是否为合法的日期格式:YYYY-MM-DD HH:MM:SS
78 * 或 YYYY-MM-DD 或 HH:MM:SS
79 */
80 function isDateStr(ds){
81 parts = ds.split(' ');
82 switch(parts.length){
83 case 2:
84 if(isDatePart( parts[0] ) == true && isTimePart( parts[1] )){
85 return true;
86 }else{
87 return false;
88 }
89 case 1:
90 aPart = parts[0];
91 if(aPart.indexOf(':') > 0 ){
92 return isTimePart(aPart);
93 }else{
94 return isDatePart(aPart);
95 }
96 default:
97 return false;
98 }
99 }
100
101 /***********************************************************************
102 * 判断一个字符串是否为合法的日期格式:YYYY-MM-DD
103 */
104 function isDatePart(dateStr){
105 var parts;
106
107 if(dateStr.indexOf("-") > -1){
108 parts = dateStr.split('-');
109 }else if(dateStr.indexOf("/") > -1){
110 parts = dateStr.split('/');
111 }else{
112 return false;
113 }
114
115 if(parts.length < 3){
116 //日期部分不允许缺少年、月、日中的任何一项
117 return false;
118 }
119
120 for(i = 0 ;i < 3; i ++){
121 //如果构成日期的某个部分不是数字,则返回false
122 if(isNaN(parts[i])){
123 return false;
124 }
125 }
126
127 y = parts[0];//
128 m = parts[1];//
129 d = parts[2];//
130
131 if(y > 3000){
132 return false;
133 }
134
135 if(m < 1 || m > 12){
136 return false;
137 }
138
139 switch(d){
140 case 29:
141 if(m == 2){
142 //如果是2月份
143 if( (y / 100) * 100 == y && (y / 400) * 400 != y){
144 //如果年份能被100整除但不能被400整除 (即闰年)
145 }else{
146 return false;
147 }
148 }
149 break;
150 case 30:
151 if(m == 2){
152 //2月没有30日
153 return false;
154 }
155 break;
156 case 31:
157 if(m == 2 || m == 4 || m == 6 || m == 9 || m == 11){
158 //2、4、6、9、11月没有31日
159 return false;
160 }
161 break;
162 default:
163
164 }
165
166 return true;
167 }
168
169 /***********************************************************************
170 * 判断一个字符串是否为合法的时间格式:HH:MM:SS
171 */
172 function isTimePart(timeStr){
173 var parts;
174
175 parts = timeStr.split(':');
176
177 if(parts.length < 2){
178 //日期部分不允许缺少小时、分钟中的任何一项
179 return false;
180 }
181
182 for(i = 0 ;i < parts.length; i ++){
183 //如果构成时间的某个部分不是数字,则返回false
184 if(isNaN(parts[i])){
185 return false;
186 }
187 }
188
189 h = parts[0];//
190 m = parts[1];//
191
192 if( h < 0 || h > 23){
193 //限制小时的范围
194 return false;
195 }
196 if( m < 0 || h > 59){
197 //限制分钟的范围
198 return false;
199 }
200
201 if(parts.length > 2){
202 s = parts[2];//
203
204 if( s < 0 || s > 59){
205 //限制秒的范围
206 return false;
207 }
208 }
209
210 return true;
211 }
212
213 function chk_email(email){
214 invalid = "";
215
216 if (!email){}
217 //invalid = "请输入您的Email地址。";
218
219 else {
220
221 if ( (email.indexOf("@") == -1) || (email.indexOf(".") == -1) )
222 invalid += "\n\nEmail地址不合法。应当包含'@'和'.';例如('.com')。请检查后再递交。";
223
224 if (email.indexOf("your email here") > -1)
225 invalid += "\n\nEmail地址不合法,请检测您的Email地址,在域名内应当包含'@'和'.';例如('.com')。";
226
227 if (email.indexOf("\\") > -1)
228 invalid += "\n\nEmail地址不合法,含有非法字符(\\)。";
229
230 if (email.indexOf("/") > -1)
231 invalid += "\n\nEmail地址不合法,含有非法字符(/)。";
232
233 if (email.indexOf("'") > -1)
234 invalid += "\n\nEmail地址不合法,含有非法字符(')。";
235
236 if (email.indexOf("!") > -1)
237 invalid += "\n\nEmail地址不合法,含有非法字符(!)。";
238
239 if ( (email.indexOf(",") > -1) || (email.indexOf(";") > -1) )
240 invalid += "\n\n只输入一个Email地址,不要含有分号和逗号。";
241
242 if (email.indexOf("?subject") > -1)
243 invalid += "\n\n不要加入'?subject=...'。";
244
245 }
246
247 if (invalid == ""){
248 return true;
249 }else{
250 alert("输入的Email可能包含错误:" + invalid);
251 return false;
252 }
253 }