validate.js 5.6 KB

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