validate.js 7.0 KB

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