正则表达式验证

来源:互联网 发布:超级祝福油数据库 编辑:程序博客网 时间:2024/04/28 01:45
  1. /**  
  2. * js 各种表单数据验证  
  3. */  
  4. /**************************************************************************************/  
  5. /*************************************数字的验 证*****************************************/  
  6. /**************************************************************************************/  
  7.   
  8. /**  
  9. * 检查输入的一串字符是否全部是数字  
  10. * 输入:str 字符 串  
  11. * 返回:true 或 flase; true表示为数字  
  12. */  
  13. function checkNum(str){   
  14. return str.match(//D/) == null;   
  15. }   
  16.   
  17. /**  
  18. * 检查输入的一串字符是否为小数  
  19. * 输入:str 字符串  
  20. * 返 回:true 或 flase; true表示为小数  
  21. */  
  22. function checkDecimal(str){   
  23. if (str.match(/^-?/d+(/./d+)?$/g) == null) {   
  24. return false;   
  25. }   
  26. else {   
  27. return true;   
  28. }   
  29. }   
  30.   
  31. /**  
  32. * 检查输入的一串字符是否为整型数据  
  33. * 输入:str 字 符串  
  34. * 返回:true 或 flase; true表示为小数  
  35. */  
  36. function checkInteger(str){   
  37. if (str.match(/^[-+]?/d*$/) == null) {   
  38. return false;   
  39. }   
  40. else {   
  41. return true;   
  42. }   
  43. }   
  44.   
  45. /**************************************************************************************/  
  46. /*************************************字符的验 证*****************************************/  
  47. /**************************************************************************************/  
  48.   
  49. /**  
  50. * 检查输入的一串字符是否是字符  
  51. * 输入:str 字符串  
  52. * 返 回:true 或 flase; true表示为全部为字符 不包含汉字  
  53. */  
  54. function checkStr(str){   
  55. if (/[^/x00-/xff]/g.test(str)) {   
  56. return false;   
  57. }   
  58. else {   
  59. return true;   
  60. }   
  61. }   
  62.   
  63. /**  
  64. * 检查输入的一串字符是否包含汉字  
  65. * 输入:str 字符串  
  66. * 返 回:true 或 flase; true表示包含汉字  
  67. */  
  68. function checkChinese(str){   
  69. if (escape(str).indexOf(“%u”) != -1) {   
  70. return true;   
  71. }   
  72. else {   
  73. return false;   
  74. }   
  75. }   
  76.   
  77. /**  
  78. * 检查输入的邮箱格式是否正确  
  79. * 输入:str 字符串  
  80. * 返 回:true 或 flase; true表示格式正确  
  81. */  
  82. function checkEmail(str){   
  83. if (str.match(/[A-Za-z0-9_-]+[@](/S*)(net|com|cn|org|cc|tv|[0-9]{1,3})(/S*)/g) == null) {   
  84. return false;   
  85. }   
  86. else {   
  87. return true;   
  88. }   
  89. }   
  90.   
  91. /**  
  92. * 检查输入的手机号码格式是否 正确  
  93. * 输入:str 字符串  
  94. * 返回:true 或 flase; true表示格式正确  
  95. */  
  96. function checkMobilePhone(str){   
  97. if (str.match(/^(?:13/d|15[89])-?/d{5}(/d{3}|/*{3})$/) == null) {   
  98. return false;   
  99. }   
  100. else {   
  101. return true;   
  102. }   
  103. }   
  104.   
  105. /**  
  106. * 检查输入的固定电话号码是否 正确  
  107. * 输入:str 字符串  
  108. * 返回:true 或 flase; true表示格式正确  
  109. */  
  110. function checkTelephone(str){   
  111. if (str.match(/^(([0/+]/d{2,3}-)?(0/d{2,3})-)(/d{7,8})(-(/d{3,}))?$/) == null) {   
  112. return false;   
  113. }   
  114. else {   
  115. return true;   
  116. }   
  117. }   
  118.   
  119. /**  
  120. * 检查QQ的格式是否正确  
  121. * 输入:str 字符串  
  122. * 返 回:true 或 flase; true表示格式正确  
  123. */  
  124. function checkQQ(str){   
  125. if (str.match(/^/d{5,10}$/) == null) {   
  126. return false;   
  127. }   
  128. else {   
  129. return true;   
  130. }   
  131. }   
  132.   
  133. /**  
  134. * 检查输入的身份证号是否正确  
  135. * 输入:str 字符串  
  136. * 返 回:true 或 flase; true表示格式正确  
  137. */  
  138. function checkCard(str){   
  139. //15位数身份证正则表达式   
  140. var arg1 = /^[1-9]/d{7}((0/d)|(1[0-2]))(([0|1|2]/d)|3[0-1])/d{3}$/;   
  141. //18位数身份证正则表达式   
  142. var arg2 = /^[1-9]/d{5}[1-9]/d{3}((0/d)|(1[0-2]))(([0|1|2]/d)|3[0-1])((/d{4})|/d{3}[A-Z])$/;   
  143. if (str.match(arg1) == null && str.match(arg2) == null) {   
  144. return false;   
  145. }   
  146. else {   
  147. return true;   
  148. }   
  149. }   
  150.   
  151. /**  
  152. * 检查输入的IP地址是否正确  
  153. * 输入:str 字符串  
  154. * 返 回:true 或 flase; true表示格式正确  
  155. */  
  156. function checkIP(str){   
  157. var arg = /^(/d{1,2}|1/d/d|2[0-4]/d|25[0-5])/.(/d{1,2}|1/d/d|2[0-4]/d|25[0-5])/.(/d{1,2}|1/d/d|2[0-4]/d|25[0-5])/.(/d{1,2}|1/d/d|2[0-4]/d|25[0-5])$/;   
  158. if (str.match(arg) == null) {   
  159. return false;   
  160. }   
  161. else {   
  162. return true;   
  163. }   
  164. }   
  165.   
  166. /**  
  167. * 检查输入的URL地址是否正确  
  168. * 输入:str 字符串  
  169. * 返 回:true 或 flase; true表示格式正确  
  170. */  
  171. function checkURL(str){   
  172. if (str.match(/(http[s]?|ftp):////[^///.]+?/..+/w$/i) == null) {   
  173. return false  
  174. }   
  175. else {   
  176. return true;   
  177. }   
  178. }   
  179.   
  180. /**  
  181. * 检查输入的字符是否具有特殊字符  
  182. * 输入:str 字符串  
  183. * 返 回:true 或 flase; true表示包含特殊字符  
  184. * 主要用于注册信息的时候验证  
  185. */  
  186. function checkQuote(str){   
  187. var items = new Array(“~”, “`”, “!”, “@”, “#”, “$”, “%”, “^”, “&”, “*”, “{“, “}”, “[", "]“, “(“, “)”);   
  188. items.push(“:”, “;”, “‘”, “|”, “//”, “<”, “>”, “?”, “/”, “<<”, “>>”, “||”, “//”);   
  189. items.push(“admin”, “administrators”, “administrator”, “管 理员”, “系统管理员”);   
  190. items.push(“select”, “delete”, “update”, “insert”, “create”, “drop”, “alter”, “trancate”);   
  191. str = str.toLowerCase();   
  192. for (var i = 0; i < items.length; i++) {   
  193. if (str.indexOf(items[i]) >= 0) {   
  194. return true;   
  195. }   
  196. }   
  197. return false;   
  198. }   
  199.   
  200. /**************************************************************************************/  
  201. /*************************************时间的验 证*****************************************/  
  202. /**************************************************************************************/  
  203.   
  204. /**  
  205. * 检查日期格式是否正确  
  206. * 输入:str 字符串  
  207. * 返 回:true 或 flase; true表示格式正确  
  208. * 注意:此处不能验证中文日期格式  
  209. * 验证短日期(2007-06-05)  
  210. */  
  211. function checkDate(str){   
  212. //var value=str.match(/((^((1[8-9]/d{2})|([2-9]/d{3}))(-)(10|12|0?[13578])(-)(3[01]|[12][0-9]|0?[1-9])$)|(^((1[8-9]/d{2})|([2-9]/d{3}))(-)(11|0?[469])(-)(30|[12][0-9]|0?[1-9])$)|(^((1[8-9]/d{2})|([2-9]/d{3}))(-)(0?2)(-)(2[0-8]|1[0-9]|0?[1-9])$)|(^([2468][048]00)(-)(0?2)(-)(29)$)|(^([3579][26]00)(-)(0?2)(-)(29)$)|(^([1][89][0][48])(-)(0?2)(-)(29)$)|(^([2-9][0-9][0][48])(-)(0?2)(-)(29)$)|(^([1][89][2468][048])(-)(0?2)(-)(29)$)|(^([2-9][0-9][2468][048])(-)(0?2)(-)(29)$)|(^([1][89][13579][26])(-)(0?2)(-)(29)$)|(^([2-9][0-9][13579][26])(-)(0?2)(-)(29)$))/);   
  213. var value = str.match(/^(/d{1,4})(-|//)(/d{1,2})/2(/d{1,2})$/);   
  214. if (value == null) {   
  215. return false;   
  216. }   
  217. else {   
  218. var date = new Date(value[1], value[3] – 1, value[4]);   
  219. return (date.getFullYear() == value[1] && (date.getMonth() + 1) == value[3] && date.getDate() == value[4]);   
  220. }   
  221. }   
  222.   
  223. /**  
  224. * 检查时间格式是否正确  
  225. * 输入:str 字符串  
  226. * 返回:true 或 flase; true表示 格式正确  
  227. * 验证时间(10:57:10)  
  228. */  
  229. function checkTime(str){   
  230. var value = str.match(/^(/d{1,2})(:)?(/d{1,2})/2(/d{1,2})$/)   
  231. if (value == null) {   
  232. return false;   
  233. }   
  234. else {   
  235. if (value[1] > 24 || value[3] > 60 || value[4] > 60) {   
  236. return false  
  237. }   
  238. else {   
  239. return true;   
  240. }   
  241. }   
  242. }   
  243.   
  244. /**  
  245. * 检查全日期时间格式是否正确  
  246. * 输入:str 字符串  
  247. * 返 回:true 或 flase; true表示格式正确  
  248. * (2007-06-05 10:57:10)  
  249. */  
  250. function checkFullTime(str){   
  251. //var value = str.match(/^(/d{1,4})(-|//)(/d{1,2})/2(/d{1,2}) (/d{1,2}):(/d{1,2}):(/d{1,2})$/);   
  252. var value = str.match(/^(?:19|20)[0-9][0-9]-(?:(?:0[1-9])|(?:1[0-2]))-(?:(?:[0-2][1-9])|(?:[1-3][0-1])) (?:(?:[0-2][0-3])|(?:[0-1][0-9])):[0-5][0-9]:[0-5][0-9]$/);   
  253. if (value == null) {   
  254. return false;   
  255. }   
  256. else {   
  257. //var date = new Date(checkFullTime[1], checkFullTime[3] – 1, checkFullTime[4], checkFullTime[5], checkFullTime[6], checkFullTime[7]);   
  258. //return (date.getFullYear() == value[1] && (date.getMonth() + 1) == value[3] && date.getDate() == value[4] && date.getHours() == value[5] && date.getMinutes() == value[6] && date.getSeconds() == value[7]);   
  259. return true;   
  260. }   
  261.   
  262. }   
  263.   
  264. /**************************************************************************************/  
  265. /************************************身份证号码的 验证*************************************/  
  266. /**************************************************************************************/  
  267.   
  268. /**  
  269. * 身份证15位编码规则:dddddd yymmdd xx p  
  270. * dddddd: 地区码  
  271. * yymmdd: 出生年月日  
  272. * xx: 顺序类编码,无法确定  
  273. * p: 性别,奇数为男,偶数为女  
  274. * <p />  
  275. * 身 份证18位编码规则:dddddd yyyymmdd xxx y  
  276. * dddddd:地区码  
  277. * yyyymmdd: 出生年月日  
  278. * xxx: 顺序类编码,无法确定,奇数为男,偶数为女  
  279. * y: 校验码,该位数值可通过前17位计算获得  
  280. * <p />  
  281. * 18 位号码加权因子为(从右到 左) Wi = [ 7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2,1 ]  
  282. * 验 证位 Y = [ 1, 0, 10, 9, 8, 7, 6, 5, 4, 3, 2 ]  
  283. * 校验位计算公 式:Y_P = mod( ∑(Ai×Wi),11 )  
  284. * i为身份证号码从右往左数的 2…18 位; Y_P为脚丫校验码所在校验码数 组位置  
  285. *  
  286. */  
  287. var Wi = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2, 1];// 加权因子   
  288. var ValideCode = [1, 0, 10, 9, 8, 7, 6, 5, 4, 3, 2];// 身份证验证位值.10代表X   
  289. function IdCardValidate(idCard){   
  290. idCard = trim(idCard.replace(/ /g, “”));   
  291. if (idCard.length == 15) {   
  292. return isValidityBrithBy15IdCard(idCard);   
  293. }   
  294. else  
  295. if (idCard.length == 18) {   
  296. var a_idCard = idCard.split(“”);// 得到身份证数组   
  297. if (isValidityBrithBy18IdCard(idCard) && isTrueValidateCodeBy18IdCard(a_idCard)) {   
  298. return true;   
  299. }   
  300. else {   
  301. return false;   
  302. }   
  303. }   
  304. else {   
  305. return false;   
  306. }   
  307. }   
  308.   
  309. /**  
  310. * 判断身份证号码为18位时最后的验证位是否正确  
  311. * @param a_idCard 身份证号码数组  
  312. * @return  
  313. */  
  314. function isTrueValidateCodeBy18IdCard(a_idCard){   
  315. var sum = 0; // 声明加权求和变量   
  316. if (a_idCard[17].toLowerCase() == ‘x’) {   
  317. a_idCard[17] = 10;// 将最后位为x的验证码替换为10方便后续操作   
  318. }   
  319. for (var i = 0; i < 17; i++) {   
  320. sum += Wi[i] * a_idCard[i];// 加权求和   
  321. }   
  322. valCodePosition = sum % 11;// 得到验证码所位置   
  323. if (a_idCard[17] == ValideCode[valCodePosition]) {   
  324. return true;   
  325. }   
  326. else {   
  327. return false;   
  328. }   
  329. }   
  330.   
  331. /**  
  332. * 通过身份证判断是男是女  
  333. * @param idCard 15/18位身份证号码  
  334. * @return ‘female’- 女、’male’-男  
  335. */  
  336. function maleOrFemalByIdCard(idCard){   
  337. idCard = trim(idCard.replace(/ /g, “”));// 对身份证号码做处理。包括字符间有空格。   
  338. if (idCard.length == 15) {   
  339. if (idCard.substring(14, 15) % 2 == 0) {   
  340. return ‘female’;   
  341. }   
  342. else {   
  343. return ‘male’;   
  344. }   
  345. }   
  346. else  
  347. if (idCard.length == 18) {   
  348. if (idCard.substring(14, 17) % 2 == 0) {   
  349. return ‘female’;   
  350. }   
  351. else {   
  352. return ‘male’;   
  353. }   
  354. }   
  355. else {   
  356. return null;   
  357. }   
  358. }   
  359.   
  360. /**  
  361. * 验证18位数身份证号码中的生日是否是有效生日  
  362. * @param idCard 18位书身份证字符串  
  363. * @return  
  364. */  
  365. function isValidityBrithBy18IdCard(idCard18){   
  366. var year = idCard18.substring(6, 10);   
  367. var month = idCard18.substring(10, 12);   
  368. var day = idCard18.substring(12, 14);   
  369. var temp_date = new Date(year, parseFloat(month) – 1, parseFloat(day));   
  370. // 这里用getFullYear()获取年份,避免千年虫问题   
  371. if (temp_date.getFullYear() != parseFloat(year) ||   
  372. temp_date.getMonth() != parseFloat(month) – 1 ||   
  373. temp_date.getDate() != parseFloat(day)) {   
  374. return false;   
  375. }   
  376. else {   
  377. return true;   
  378. }   
  379. }   
  380.   
  381. /**  
  382. * 验证15位数身份证号码中的生日是否是有效生日  
  383. * @param idCard15 15位书身份证字符串  
  384. * @return  
  385. */  
  386. function isValidityBrithBy15IdCard(idCard15){   
  387. var year = idCard15.substring(6, 8);   
  388. var month = idCard15.substring(8, 10);   
  389. var day = idCard15.substring(10, 12);   
  390. var temp_date = new Date(year, parseFloat(month) – 1, parseFloat(day));   
  391. // 对于老身份证中的你年龄则不需考虑千年虫问题而使用getYear()方法   
  392. if (temp_date.getYear() != parseFloat(year) ||   
  393. temp_date.getMonth() != parseFloat(month) – 1 ||   
  394. temp_date.getDate() != parseFloat(day)) {   
  395. return false;   
  396. }   
  397. else {   
  398. return true;   
  399. }   
  400. }   
  401.   
  402. /**去掉字符串头尾空格*/  
  403. function trim(str){   
  404. return str.replace(/(^/s*)|(/s*$)/g, “”);   
  405. }