validate.js 6.3 KB

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