JS驗(yàn)證合法性
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.* 過濾中間字符串和多個(gè)空格
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. //檢查字符串結(jié)束部分的空格
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. //將文字中間多個(gè)相連的空格變?yōu)橐粋€(gè)空格
48. retValue = retValue.substring(0, retValue.indexOf(" "))
retValue.substring(retValue.indexOf(" ") 1, retValue.length);
49. }
50. return retValue;
51.}
52.
53./**
54.* 過濾字符串, 指定過濾內(nèi)容,如果內(nèi)容為空,則默認(rèn)過
濾 '~!@#$^&*()- ."
55.* @param {Object} str
56.* @param {Object} filterStr
57.*
58.* @return 包含過濾內(nèi)容,返回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;//當(dāng)包含非法字符時(shí),返回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.* 過濾指定內(nèi)容字符串
79.* @param {Object} str 檢查字符串
80.* @param {Object} filterStr 過濾字符串,內(nèi)容為空,則默認(rèn)過
濾 '~!@#$^&*()- ."
81.* @param {Object} alertStr 彈出對(duì)話內(nèi)容
82.* @param {Object} idStr 出錯(cuò)返回出錯(cuò)字段ID
83.*/
84.function ISFilterStr(str, filterStr, alertStr, idStr){
85. alertStr = "對(duì)不起, 您輸入的 " alertStr " 不允包
含 " filterStr " 非法字符";
86. if (FilterStr(str, filterStr))
87. this.AlertAndRFalse(alertStr, idStr);
88.}
89.
90./**
91.* 檢查是否為網(wǎng)址
92.* @param {} str_url
93.* @param {} alertStr 彈出字段內(nèi)容
94.* @param {} idStr 光標(biāo)定位的字段ID只能接收ID
95.* @return {Boolean} 不是網(wǎng)址返回false;
96.*/
97.function IsURL(str_url, alertStr, idStr){// 驗(yàn)證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]." // 二級(jí)域名 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 彈出字段內(nèi)容
127. * @param {} idStr 光標(biāo)定位的字段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. * 檢查是否為數(shù)字
139. * @param {} str
140. * @param {} alertStr 彈出字段內(nèi)容
141. * @param {} idStr 光標(biāo)定位的字段ID只能接收ID 142. * @return {Boolean} 不是數(shù)字返回false;
143. */
144. function IsNum(str, alertStr, idStr){
145. alertStr = alertStr " 應(yīng)該由數(shù)字組成!";
146. var re = /^[d] $/
147. if (!re.test(str))
148. this.AlertAndRFalse(alertStr, idStr);
149. }
150.
151. /**
152.  * 檢查數(shù)值是否在給定范圍以內(nèi)
153. * @param {} str_num
154. * @param {} moreLen 應(yīng)該大于或者等于的數(shù)值
155. * @param {} lessLen 應(yīng)該小于或者等于的數(shù)值
156. * @param {} alertStr 彈出字段內(nèi)容
,157. * @param {} idStr 光標(biāo)定位的字段ID只能接收ID 158. * @return {Boolean} 小于最小數(shù)值或者大于最大數(shù)值數(shù)
字返回false;
159. */
160. function IsRangeNum(str_num, moreLen, lessLen, alertStr, i
dStr){
161. IsNum(str_num, alertStr, idStr);
162. if (moreLen != "") {
163. alertStr = alertStr " 數(shù)值不能小
于 " moreLen;
164. if (str_num < moreLen)
165. this.AlertAndRFalse(alertStr, idStr); 166. }
167. if (lessLen != "") {
168. alertStr = alertStr " 數(shù)值不能大
于 " lessLen;
169. if (str_num > lessLen)
170. this.AlertAndRFalse(alertStr, idStr); 171. }
172. if (moreLen == "" && lessLen == "")
173. this.AlertAndRFalse("沒有定義最大最小長
度!", idStr);
174. }
175.
176. /**
177.  * 檢查是否為合格字符串(不區(qū)分大小寫)
178. * 長度在6至20位, 并且是由a-z0-9_組成的字符串
179. * @param {} str 檢查的字符串
180. * @param {} alertStr 彈出字段內(nèi)容
181. * @param {} idStr 光標(biāo)定位的字段ID只能接收ID 182. * @return {Boolean} 不是"長度在6至20位且由a-z0-9_"
組成返回false;
183. */
184. function IsLicit(str, alertStr, idStr){
185. alertStr = "對(duì)不起," 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. * 檢查二個(gè)字符串是否相等
193. * @param {} str1 第一個(gè)字符串
,194. * @param {} str2 第二個(gè)字符串
195. * @param {} alertStr 彈出字段內(nèi)容
196. * @param {} idStr 光標(biāo)定位的字段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. * 檢查字符串是否在給定長度范圍以內(nèi)(中文字符以2個(gè)字節(jié)計(jì)
算)
207. *
208. * @param {} str 檢查的字符
209. * @param {} moreLen 應(yīng)該大于或者等于的長度
210. * @param {} lessLen 應(yīng)該小于或者等于的長度
211. * @param {} alertStr 彈出字段內(nèi)容
212. * @param {} idStr 光標(biāo)定位的字段ID只能接收ID 213. * @return {Boolean} 小于最小長度或者大于最大長度數(shù)
字返回false;
214. */
215. function IsRange(str, moreLen, lessLen, alertStr, idStr){
216. var strLen = LengthB(str);
217. if (moreLen != "") {
218. alertStr = alertStr " 應(yīng)該大于或等
于 " moreLen " 個(gè)字節(jié)長度!";
219. if (strLen < moreLen)
220. this.AlertAndRFalse(alertStr, idStr); 221. }
222. if (lessLen != "") {
223. alertStr = alertStr " 應(yīng)該小于或等
于 " lessLen " 個(gè)字節(jié)長度!";
224. if (strLen > lessLen)
225. this.AlertAndRFalse(alertStr, idStr); 226. }
227. if (moreLen == "" && lessLen == "")
228. this.AlertAndRFalse("沒有定義最大最小長
度!", idStr);
229. }
230.
231. /**
,232. * 檢查字符串是否小于給定長度范圍(中文字符以2個(gè)字節(jié)計(jì)
算)
233. * @param {} str 字符串
234. * @param {} lessLen 小于或等于長度
235. * @param {} alertStr 彈出字段內(nèi)容
236. * @param {} idStr 光標(biāo)定位的字段ID只能接收ID 237. * @return {Boolean} 大于給定長度數(shù)字返回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 彈出字段內(nèi)容
247. * @param {} idStr 光標(biāo)定位的字段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. * 彈出警示框, 并定位到出錯(cuò)字段上
258. * @param {} alertStr 彈出警告框內(nèi)容
259. * @param {} idStr 返回字段焦點(diǎn)
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')); //文章標(biāo)題
272.
273. IsEmpty(title,"文章標(biāo)題","title");//不可為空
,274. IsLess(title,100,"文章標(biāo)題","title");//標(biāo)題應(yīng)少于100
個(gè)字符長
275.
276. ISFilterStr(title, "~`!@#$^&*()-=_ []{}|;':",./<
>?", "文章標(biāo)題","title")//標(biāo)題不允許包含這些非法字符
277. } catch(err) {
278. if(err == "valueErr")
279. return false;
280. }
281. }