JS验证合法性
1. /**2. * 得到中英文字符长3. * @param {} str4. * @return {}5. */6. function LengthB(str){7. var
1. /**
2. * 得到中英文字符长
3. * @param {} str
4. * @return {}
5. */
6. function LengthB(str){
7. var p1 = new RegExp('u..', 'g')
8. var p2 = new RegExp('.', 'g')
9. return escape(str).replace(p1, '').replace(p2, '').length
10.}
11.
12./**
13.* 过滤所有空格字符
14.* @param {Object} str
15.*/
16.function jsTrim(str){
17. str = "";
18. while ((str.charAt(0) == ' ') || (str.charAt(0) == '???') |
| (escape(str.charAt(0)) == ' '))
19. str = str.substring(1, str.length);
20. while ((str.charAt(str.length - 1) == ' ') || (str.charAt(s
tr.length - 1) == '???') || (escape(str.charAt(str.length - 1)) == ' '))
21. str = str.substring(0, str.length - 1);
22. return str;
23.}
24.
25./**
26.* 过滤中间字符串和多个空格
27.* @param {Object} inputString
28.*/
29.function trim(inputString){
30. if (typeof inputString != "string") {
31. return inputString;
32. }
33. var retValue = inputString;
34. var ch = retValue.substring(0, 1);
35. while (ch == " ") {
36. //检查字符串开始部分的空格
37. retValue = retValue.substring(1, retValue.length);
38. ch = retValue.substring(0, 1);
39. }
,40. ch = retValue.substring(retValue.length - 1, retValue.lengt
h);
41. while (ch == " ") {
42. //检查字符串结束部分的空格
43. retValue = retValue.substring(0, retValue.length - 1);
44. ch = retValue.substring(retValue.length - 1, retValue.l
ength);
45. }
46. while (retValue.indexOf(" ") != -1) {
47. //将文字中间多个相连的空格变为一个空格
48. retValue = retValue.substring(0, retValue.indexOf(" "))
retValue.substring(retValue.indexOf(" ") 1, retValue.length);
49. }
50. return retValue;
51.}
52.
53./**
54.* 过滤字符串, 指定过滤内容,如果内容为空,则默认过
滤 '~!@#$^&*()- ."
55.* @param {Object} str
56.* @param {Object} filterStr
57.*
58.* @return 包含过滤内容,返回True, 否则返回false;
59.*/
60.function FilterStr(str, filterStr){
61. filterStr = filterStr == "" ? "'~!@#$^&*()- ."" : filterS
tr
62. var ch;
63. var i;
64. var temp;
65. var error = false;//当包含非法字符时,返回True
66. for (i = 0; i <= (filterStr.length - 1); i ) {
67. ch = filterStr.charAt(i);
68. temp = str.indexOf(ch);
69. if (temp != -1) {
70. error = true;
71. break;
72. }
73. }
74. return error;
75.}
76.
,77./**
78.* 过滤指定内容字符串
79.* @param {Object} str 检查字符串
80.* @param {Object} filterStr 过滤字符串,内容为空,则默认过
滤 '~!@#$^&*()- ."
81.* @param {Object} alertStr 弹出对话内容
82.* @param {Object} idStr 出错返回出错字段ID
83.*/
84.function ISFilterStr(str, filterStr, alertStr, idStr){
85. alertStr = "对不起, 您输入的 " alertStr " 不允包
含 " filterStr " 非法字符";
86. if (FilterStr(str, filterStr))
87. this.AlertAndRFalse(alertStr, idStr);
88.}
89.
90./**
91.* 检查是否为网址
92.* @param {} str_url
93.* @param {} alertStr 弹出字段内容
94.* @param {} idStr 光标定位的字段ID只能接收ID
95.* @return {Boolean} 不是网址返回false;
96.*/
97.function IsURL(str_url, alertStr, idStr){// 验证url
98.
99. alertStr = alertStr " 格式不正确!";
100. var strRegex = "^((https|http|ftp|rtsp|mms)?://)" 101. "?(([0-9a-z_!~*'().&= $-] : )?[0-9a-z_!~*'().&= $-]
@)?" // ftp的user@
102.
103. "(([0-9]{1,3}.){3}[0-9]{1,3}" // IP形式的
URL- 199.194.52.184
104.
105. "|" // 允许IP 和DOMAIN (域名)
106.
107. "([0-9a-z_!~*'()-] .)*" // 域名- www.
108.
109. "([0-9a-z][0-9a-z-]{0,61})?[0-9a-z]." // 二级域名 110.
111. "[a-z]{2,6})" // first level domain- .com or .museum
112.
113. "(:[0-9]{1,4})?" // 端口- :80
114.
,115. "((/?)|" // a slash isn't required if there is no file
name
116.
117. "(/[0-9a-z_!~*'().;?:@&= $,#-] ) /?)$";
118. var re = new RegExp(strRegex);
119. if (!re.test(str_url))
120. this.AlertAndRFalse(alertStr, idStr);
121. }
122.
123. /**
124. * 检查是否为电子邮件
125. * @param {} str
126. * @param {} alertStr 弹出字段内容
127. * @param {} idStr 光标定位的字段ID只能接收ID 128. * @return {Boolean} 不是电子邮件返回false; 129. */
130. function IsEmail(str, alertStr, idStr){
131. alertStr = alertStr " 格式不正确!";
132. var re = /^([a-zA-Z0-9] [_|-|.]?)*[a-zA-Z0-9] @([a-z
A-Z0-9] [_|-|.]?)*[a-zA-Z0-9] .[a-zA-Z]{2,3}$/;
133. if (!re.test(str))
134. this.AlertAndRFalse(alertStr, idStr);
135. }
136.
137. /**
138. * 检查是否为数字
139. * @param {} str
140. * @param {} alertStr 弹出字段内容
141. * @param {} idStr 光标定位的字段ID只能接收ID 142. * @return {Boolean} 不是数字返回false;
143. */
144. function IsNum(str, alertStr, idStr){
145. alertStr = alertStr " 应该由数字组成!";
146. var re = /^[d] $/
147. if (!re.test(str))
148. this.AlertAndRFalse(alertStr, idStr);
149. }
150.
151. /**
152. * 检查数值是否在给定范围以内
153. * @param {} str_num
154. * @param {} moreLen 应该大于或者等于的数值
155. * @param {} lessLen 应该小于或者等于的数值
156. * @param {} alertStr 弹出字段内容
,157. * @param {} idStr 光标定位的字段ID只能接收ID 158. * @return {Boolean} 小于最小数值或者大于最大数值数
字返回false;
159. */
160. function IsRangeNum(str_num, moreLen, lessLen, alertStr, i
dStr){
161. IsNum(str_num, alertStr, idStr);
162. if (moreLen != "") {
163. alertStr = alertStr " 数值不能小
于 " moreLen;
164. if (str_num < moreLen)
165. this.AlertAndRFalse(alertStr, idStr); 166. }
167. if (lessLen != "") {
168. alertStr = alertStr " 数值不能大
于 " lessLen;
169. if (str_num > lessLen)
170. this.AlertAndRFalse(alertStr, idStr); 171. }
172. if (moreLen == "" && lessLen == "")
173. this.AlertAndRFalse("没有定义最大最小长
度!", idStr);
174. }
175.
176. /**
177. * 检查是否为合格字符串(不区分大小写)
178. * 长度在6至20位, 并且是由a-z0-9_组成的字符串
179. * @param {} str 检查的字符串
180. * @param {} alertStr 弹出字段内容
181. * @param {} idStr 光标定位的字段ID只能接收ID 182. * @return {Boolean} 不是"长度在6至20位且由a-z0-9_"
组成返回false;
183. */
184. function IsLicit(str, alertStr, idStr){
185. alertStr = "对不起," alertStr " 不能为空并且只能
由 0到9 a到z 下划线 的6到20位组成! ";
186. var re = /^[_0-9a-zA-Z]{6,20}$/
187. if (!re.test(str))
188. this.AlertAndRFalse(alertStr, idStr);
189. }
190.
191. /**
192. * 检查二个字符串是否相等
193. * @param {} str1 第一个字符串
,194. * @param {} str2 第二个字符串
195. * @param {} alertStr 弹出字段内容
196. * @param {} idStr 光标定位的字段ID只能接收ID 197. * @return {Boolean} 字符串不相等返回false;
198. */
199. function IsStrEquals(str1, str2, alertStr, idStr){ 200. alertStr = "二次 " alertStr " 不一致!"; 201. if (str1 != str2)
202. this.AlertAndRFalse(alertStr, idStr);
203. }
204.
205. /**
206. * 检查字符串是否在给定长度范围以内(中文字符以2个字节计
算)
207. *
208. * @param {} str 检查的字符
209. * @param {} moreLen 应该大于或者等于的长度
210. * @param {} lessLen 应该小于或者等于的长度
211. * @param {} alertStr 弹出字段内容
212. * @param {} idStr 光标定位的字段ID只能接收ID 213. * @return {Boolean} 小于最小长度或者大于最大长度数
字返回false;
214. */
215. function IsRange(str, moreLen, lessLen, alertStr, idStr){
216. var strLen = LengthB(str);
217. if (moreLen != "") {
218. alertStr = alertStr " 应该大于或等
于 " moreLen " 个字节长度!";
219. if (strLen < moreLen)
220. this.AlertAndRFalse(alertStr, idStr); 221. }
222. if (lessLen != "") {
223. alertStr = alertStr " 应该小于或等
于 " lessLen " 个字节长度!";
224. if (strLen > lessLen)
225. this.AlertAndRFalse(alertStr, idStr); 226. }
227. if (moreLen == "" && lessLen == "")
228. this.AlertAndRFalse("没有定义最大最小长
度!", idStr);
229. }
230.
231. /**
,232. * 检查字符串是否小于给定长度范围(中文字符以2个字节计
算)
233. * @param {} str 字符串
234. * @param {} lessLen 小于或等于长度
235. * @param {} alertStr 弹出字段内容
236. * @param {} idStr 光标定位的字段ID只能接收ID 237. * @return {Boolean} 大于给定长度数字返回false; 238. */
239. function IsLess(str, lessLen, alertStr, idStr){ 240. IsRange(str, "", lessLen, alertStr, idStr); 241. }
242.
243. /**
244. * 检查字符不为空
245. * @param {} str
246. * @param {} alertStr 弹出字段内容
247. * @param {} idStr 光标定位的字段ID只能接收ID 248. * @return {Boolean} 字符为空返回false;
249. */
250. function IsEmpty(str, alertStr, idStr){
251. alertStr = alertStr " 不能为空!";
252. if (str == "")
253. this.AlertAndRFalse(alertStr, idStr);
254. }
255.
256. /**
257. * 弹出警示框, 并定位到出错字段上
258. * @param {} alertStr 弹出警告框内容
259. * @param {} idStr 返回字段焦点
260. * @return {Boolean} 返回false
261. */
262. function AlertAndRFalse(alertStr, idStr){
263. alert(alertStr);
264. document.getElementById(idStr).focus();
265. throw "valueErr";
266. }
267.
268. // JavaScript Document
269. function checkForm() {
270. try {
271. var title = trim(document.getElementById('t
itle')); //文章标题
272.
273. IsEmpty(title,"文章标题","title");//不可为空
,274. IsLess(title,100,"文章标题","title");//标题应少于100
个字符长
275.
276. ISFilterStr(title, "~`!@#$^&*()-=_ []{}|;':",./<
>?", "文章标题","title")//标题不允许包含这些非法字符
277. } catch(err) {
278. if(err == "valueErr")
279. return false;
280. }
281. }