validate.js 6.6 KB

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