validate.js 6.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253
  1. /**
  2. * Created by jiachenpan on 16/11/18.
  3. */
  4. export function isvalidUsername(str) {
  5. const valid_map = ['admin', 'editor']
  6. return valid_map.indexOf(str.trim()) >= 0
  7. }
  8. /* 合法uri*/
  9. export function validateURL(textval) {
  10. const urlregex = /^(https?|ftp):\/\/([a-zA-Z0-9.-]+(:[a-zA-Z0-9.&%$-]+)*@)*((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9][0-9]?)(\.(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])){3}|([a-zA-Z0-9-]+\.)*[a-zA-Z0-9-]+\.(com|edu|gov|int|mil|net|org|biz|arpa|info|name|pro|aero|coop|museum|[a-zA-Z]{2}))(:[0-9]+)*(\/($|[a-zA-Z0-9.,?'\\+&%$#=~_-]+))*$/
  11. return urlregex.test(textval)
  12. }
  13. /**
  14. * 邮箱
  15. * @param {*} s
  16. */
  17. export function isEmail(s) {
  18. return /^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+((.[a-zA-Z0-9_-]{2,3}){1,2})$/.test(s)
  19. }
  20. /**
  21. * 手机号码
  22. * @param {*} s
  23. */
  24. export function isMobile(s) {
  25. return /^1[0-9]{10}$/.test(s)
  26. }
  27. /**
  28. * 电话号码
  29. * @param {*} s
  30. */
  31. export function isPhone(s) {
  32. return /^([0-9]{3,4}-)?[0-9]{7,8}$/.test(s)
  33. }
  34. /**
  35. * URL地址
  36. * @param {*} s
  37. */
  38. export function isURL(s) {
  39. return /^http[s]?:\/\/.*/.test(s)
  40. }
  41. /* 小写字母*/
  42. export function validateLowerCase(str) {
  43. const reg = /^[a-z]+$/
  44. return reg.test(str)
  45. }
  46. /* 大写字母*/
  47. export function validateUpperCase(str) {
  48. const reg = /^[A-Z]+$/
  49. return reg.test(str)
  50. }
  51. /* 大小写字母*/
  52. export function validatAlphabets(str) {
  53. const reg = /^[A-Za-z]+$/
  54. return reg.test(str)
  55. }
  56. /*验证pad还是pc*/
  57. export const vaildatePc = function() {
  58. const userAgentInfo = navigator.userAgent;
  59. const Agents = ["Android", "iPhone",
  60. "SymbianOS", "Windows Phone",
  61. "iPad", "iPod"
  62. ];
  63. let flag = true;
  64. for (var v = 0; v < Agents.length; v++) {
  65. if (userAgentInfo.indexOf(Agents[v]) > 0) {
  66. flag = false;
  67. break;
  68. }
  69. }
  70. return flag;
  71. }
  72. /**
  73. * validate email
  74. * @param email
  75. * @returns {boolean}
  76. */
  77. export function validateEmail(email) {
  78. const re = /^(([^<>()\\[\]\\.,;:\s@"]+(\.[^<>()\\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/
  79. return re.test(email)
  80. }
  81. /**
  82. * 判断身份证号码
  83. */
  84. export function cardid(code) {
  85. let list = [];
  86. let result = true;
  87. let msg = '';
  88. var city = {
  89. 11: "北京",
  90. 12: "天津",
  91. 13: "河北",
  92. 14: "山西",
  93. 15: "内蒙古",
  94. 21: "辽宁",
  95. 22: "吉林",
  96. 23: "黑龙江 ",
  97. 31: "上海",
  98. 32: "江苏",
  99. 33: "浙江",
  100. 34: "安徽",
  101. 35: "福建",
  102. 36: "江西",
  103. 37: "山东",
  104. 41: "河南",
  105. 42: "湖北 ",
  106. 43: "湖南",
  107. 44: "广东",
  108. 45: "广西",
  109. 46: "海南",
  110. 50: "重庆",
  111. 51: "四川",
  112. 52: "贵州",
  113. 53: "云南",
  114. 54: "西藏 ",
  115. 61: "陕西",
  116. 62: "甘肃",
  117. 63: "青海",
  118. 64: "宁夏",
  119. 65: "新疆",
  120. 71: "台湾",
  121. 81: "香港",
  122. 82: "澳门",
  123. 91: "国外 "
  124. };
  125. if (!validatenull(code)) {
  126. if (code.length == 18) {
  127. if (!code || !/(^\d{18}$)|(^\d{17}(\d|X|x)$)/.test(code)) {
  128. msg = "证件号码格式错误";
  129. } else if (!city[code.substr(0, 2)]) {
  130. msg = "地址编码错误";
  131. } else {
  132. //18位身份证需要验证最后一位校验位
  133. code = code.split('');
  134. //∑(ai×Wi)(mod 11)
  135. //加权因子
  136. var factor = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2];
  137. //校验位
  138. var parity = [1, 0, 'X', 9, 8, 7, 6, 5, 4, 3, 2, 'x'];
  139. var sum = 0;
  140. var ai = 0;
  141. var wi = 0;
  142. for (var i = 0; i < 17; i++) {
  143. ai = code[i];
  144. wi = factor[i];
  145. sum += ai * wi;
  146. }
  147. if (parity[sum % 11] != code[17]) {
  148. msg = "证件号码校验位错误";
  149. } else {
  150. result = false;
  151. }
  152. }
  153. } else {
  154. msg = "证件号码长度不为18位";
  155. }
  156. } else {
  157. msg = "证件号码不能为空";
  158. }
  159. list.push(result);
  160. list.push(msg);
  161. return list;
  162. }
  163. /**
  164. * 判断手机号码是否正确
  165. */
  166. export function isvalidatemobile(phone) {
  167. let list = [];
  168. let result = true;
  169. let msg = '';
  170. var isPhone = /^0\d{2,3}-?\d{7,8}$/;
  171. //增加134 减少|1349[0-9]{7},增加181,增加145,增加17[678]
  172. if (!validatenull(phone)) {
  173. if (phone.length == 11) {
  174. if (isPhone.test(phone)) {
  175. msg = '手机号码格式不正确';
  176. } else {
  177. result = false;
  178. }
  179. } else {
  180. msg = '手机号码长度不为11位';
  181. }
  182. } else {
  183. msg = '手机号码不能为空';
  184. }
  185. list.push(result);
  186. list.push(msg);
  187. return list;
  188. }
  189. /**
  190. * 判断姓名是否正确
  191. */
  192. export function validatename(name) {
  193. var regName = /^[\u4e00-\u9fa5]{2,4}$/;
  194. if (!regName.test(name)) return false;
  195. return true;
  196. }
  197. /**
  198. * 判断是否为整数
  199. */
  200. export function validatenum(num, type) {
  201. let regName = /[^\d.]/g;
  202. if (type == 1) {
  203. if (!regName.test(num)) return false;
  204. } else if (type == 2) {
  205. regName = /[^\d]/g;
  206. if (!regName.test(num)) return false;
  207. }
  208. return true;
  209. }
  210. /**
  211. * 判断是否为小数
  212. */
  213. export function validatenumord(num, type) {
  214. let regName = /[^\d.]/g;
  215. if (type == 1) {
  216. if (!regName.test(num)) return false;
  217. } else if (type == 2) {
  218. regName = /[^\d.]/g;
  219. if (!regName.test(num)) return false;
  220. }
  221. return true;
  222. }
  223. /**
  224. * 判断是否为空
  225. */
  226. export function validatenull(val) {
  227. if (typeof val == 'boolean') {
  228. return false;
  229. }
  230. if (typeof val == 'number') {
  231. return false;
  232. }
  233. if (val instanceof Array) {
  234. if (val.length == 0) return true;
  235. } else if (val instanceof Object) {
  236. if (JSON.stringify(val) === '{}') return true;
  237. } else {
  238. if (val == 'null' || val == null || val == 'undefined' || val == undefined || val == '') return true;
  239. return false;
  240. }
  241. return false;
  242. }