validator.js 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392
  1. import {idcard,validateEmail} from '@/util/validate'
  2. /**
  3. * 身份证号码验证
  4. * @param {*} rule
  5. * @param {*} value
  6. * @param {*} callback
  7. */
  8. export function validateIdcard(rule, value, callback) {
  9. if(value){
  10. let result = idcard(value);
  11. if (result.result) {
  12. callback();
  13. } else {
  14. callback(new Error(result.msg));
  15. }
  16. }else {
  17. callback();
  18. }
  19. }
  20. /**
  21. * 邮箱地址验证
  22. * @param {*} rule
  23. * @param {*} value
  24. * @param {*} callback
  25. */
  26. export function validatedEmail(rule,value,callback){
  27. if (value == '' || value == undefined || value == null) {
  28. callback();
  29. }
  30. if(validateEmail(value)){
  31. callback();
  32. }else{
  33. callback(new Error('请输入正确的邮箱地址'));
  34. }
  35. }
  36. /*是否合法IP地址*/
  37. export function validateIP(rule, value, callback) {
  38. if (value == '' || value == undefined || value == null) {
  39. callback();
  40. } else {
  41. const reg = /^(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])$/;
  42. if ((!reg.test(value)) && value != '') {
  43. callback(new Error('请输入正确的IP地址'));
  44. } else {
  45. callback();
  46. }
  47. }
  48. }
  49. /* 是否手机号码或者固话*/
  50. export function validatePhoneTwo(rule, value, callback) {
  51. const reg = /^((0\d{2,3}-\d{7,8})|(1[34578]\d{9}))$/;
  52. if (value == '' || value == undefined || value == null) {
  53. callback();
  54. } else {
  55. if ((!reg.test(value)) && value != '') {
  56. callback(new Error('请输入正确的电话号码或者固话号码'));
  57. } else {
  58. callback();
  59. }
  60. }
  61. }
  62. /* 是否固话*/
  63. export function validateTelphone(rule, value, callback) {
  64. const reg = /0\d{2}-\d{7,8}/;
  65. if (value == '' || value == undefined || value == null) {
  66. callback();
  67. } else {
  68. if ((!reg.test(value)) && value != '') {
  69. callback(new Error('请输入正确的固话(格式:区号+号码,如010-1234567)'));
  70. } else {
  71. callback();
  72. }
  73. }
  74. }
  75. /* 是否手机号码*/
  76. export function validatePhone(rule, value, callback) {
  77. const reg = /^[1][3,4,5,7,8,9][0-9]{9}$/;
  78. if (value == '' || value == undefined || value == null) {
  79. callback();
  80. } else {
  81. if ((!reg.test(value)) && value != '') {
  82. callback(new Error('请输入正确的电话号码'));
  83. } else {
  84. callback();
  85. }
  86. }
  87. }
  88. /*是否车牌号码*/
  89. export function validateLicense(rule,value,callback) {
  90. const regExp = /^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领A-Z]{1}[A-Z]{1}[A-Z0-9]{4}[A-Z0-9挂学警港澳]{1}$/;
  91. if(!regExp.test(value)) {
  92. callback(new Error("请输入正确的车牌号"));
  93. } else {
  94. callback();
  95. }
  96. }
  97. /* 是否身份证号码*/
  98. export function validateIdNo(rule, value, callback) {
  99. const reg = /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/;
  100. if (value == '' || value == undefined || value == null) {
  101. callback();
  102. } else {
  103. if ((!reg.test(value)) && value != '') {
  104. callback(new Error('请输入正确的身份证号码'));
  105. } else {
  106. callback();
  107. }
  108. }
  109. }
  110. /* 是否邮箱*/
  111. /*
  112. export function validateEMail(rule, value, callback) {
  113. const reg = /^([a-zA-Z0-9]+[-_\.]?)+@[a-zA-Z0-9]+\.[a-z]+$/;
  114. if (value == '' || value == undefined || value == null) {
  115. callback();
  116. } else {
  117. if (!reg.test(value)) {
  118. callback(new Error('请输入正确的邮箱地址'));
  119. } else {
  120. callback();
  121. }
  122. }
  123. }*/
  124. /* 合法uri*/
  125. export function validateURL(textval) {
  126. 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.,?'\\+&%$#=~_-]+))*$/;
  127. return urlregex.test(textval);
  128. }
  129. /*验证内容是否英文数字以及下划线*/
  130. export function isPassword(rule, value, callback) {
  131. const reg = /^[_a-zA-Z0-9]+$/;
  132. if (value == '' || value == undefined || value == null) {
  133. callback();
  134. } else {
  135. if (!reg.test(value)) {
  136. callback(new Error('密码仅由英文字母,数字以及下划线组成'));
  137. } else {
  138. callback();
  139. }
  140. }
  141. }
  142. /*自动检验数值的范围*/
  143. export function checkMax20000(rule, value, callback) {
  144. if (value == '' || value == undefined || value == null) {
  145. callback();
  146. } else if (!Number(value)) {
  147. callback(new Error('请输入[1,20000]之间的数字'));
  148. } else if (value < 1 || value > 20000) {
  149. callback(new Error('请输入[1,20000]之间的数字'));
  150. } else {
  151. callback();
  152. }
  153. }
  154. //验证数字输入框最大数值,32767
  155. export function checkMaxVal(rule, value, callback) {
  156. if (value < 0 || value > 32767) {
  157. callback(new Error('请输入[0,32767]之间的数字'));
  158. } else {
  159. callback();
  160. }
  161. }
  162. //验证是否1-99之间
  163. export function isOneToNinetyNine(rule, value, callback) {
  164. if (!value) {
  165. return callback(new Error('输入不可以为空'));
  166. }
  167. setTimeout(() => {
  168. if (!Number(value)) {
  169. callback(new Error('请输入正整数'));
  170. } else {
  171. const re = /^[1-9][0-9]{0,1}$/;
  172. const rsCheck = re.test(value);
  173. if (!rsCheck) {
  174. callback(new Error('请输入正整数,值为【1,99】'));
  175. } else {
  176. callback();
  177. }
  178. }
  179. }, 0);
  180. }
  181. // 验证是否整数
  182. export function isInteger(rule, value, callback) {
  183. if (!value) {
  184. return callback(new Error('输入不可以为空'));
  185. }
  186. setTimeout(() => {
  187. if (!Number(value)) {
  188. callback(new Error('请输入正整数'));
  189. } else {
  190. const re = /^[0-9]*[1-9][0-9]*$/;
  191. const rsCheck = re.test(value);
  192. if (!rsCheck) {
  193. callback(new Error('请输入正整数'));
  194. } else {
  195. callback();
  196. }
  197. }
  198. }, 0);
  199. }
  200. // 验证是否整数,非必填
  201. export function isIntegerNotMust(rule, value, callback) {
  202. if (!value) {
  203. callback();
  204. }
  205. setTimeout(() => {
  206. if (!Number(value)) {
  207. callback(new Error('请输入正整数'));
  208. } else {
  209. const re = /^[0-9]*[1-9][0-9]*$/;
  210. const rsCheck = re.test(value);
  211. if (!rsCheck) {
  212. callback(new Error('请输入正整数'));
  213. } else {
  214. callback();
  215. }
  216. }
  217. }, 1000);
  218. }
  219. // 验证是否是[0-1]的小数
  220. export function isDecimal(rule, value, callback) {
  221. if (!value) {
  222. return callback(new Error('输入不可以为空'));
  223. }
  224. setTimeout(() => {
  225. if (!Number(value)) {
  226. callback(new Error('请输入[0,1]之间的数字'));
  227. } else {
  228. if (value < 0 || value > 1) {
  229. callback(new Error('请输入[0,1]之间的数字'));
  230. } else {
  231. callback();
  232. }
  233. }
  234. }, 100);
  235. }
  236. // 验证是否是[1-10]的小数,即不可以等于0
  237. export function isBtnOneToTen(rule, value, callback) {
  238. if (typeof value == 'undefined') {
  239. return callback(new Error('输入不可以为空'));
  240. }
  241. setTimeout(() => {
  242. if (!Number(value)) {
  243. callback(new Error('请输入正整数,值为[1,10]'));
  244. } else {
  245. if (!(value == '1' || value == '2' || value == '3' || value == '4' || value == '5' || value == '6' || value == '7' || value == '8' || value == '9' || value == '10')) {
  246. callback(new Error('请输入正整数,值为[1,10]'));
  247. } else {
  248. callback();
  249. }
  250. }
  251. }, 100);
  252. }
  253. // 验证是否是[1-100]的小数,即不可以等于0
  254. export function isBtnOneToHundred(rule, value, callback) {
  255. if (!value) {
  256. return callback(new Error('输入不可以为空'));
  257. }
  258. setTimeout(() => {
  259. if (!Number(value)) {
  260. callback(new Error('请输入整数,值为[1,100]'));
  261. } else {
  262. if (value < 1 || value > 100) {
  263. callback(new Error('请输入整数,值为[1,100]'));
  264. } else {
  265. callback();
  266. }
  267. }
  268. }, 100);
  269. }
  270. // 验证是否是[0-100]的小数
  271. export function isBtnZeroToHundred(rule, value, callback) {
  272. if (!value) {
  273. return callback(new Error('输入不可以为空'));
  274. }
  275. setTimeout(() => {
  276. if (!Number(value)) {
  277. callback(new Error('请输入[1,100]之间的数字'));
  278. } else {
  279. if (value < 0 || value > 100) {
  280. callback(new Error('请输入[1,100]之间的数字'));
  281. } else {
  282. callback();
  283. }
  284. }
  285. }, 100);
  286. }
  287. // 验证端口是否在[0,65535]之间
  288. export function isPort(rule, value, callback) {
  289. if (!value) {
  290. return callback(new Error('输入不可以为空'));
  291. }
  292. setTimeout(() => {
  293. if (value == '' || typeof (value) == undefined) {
  294. callback(new Error('请输入端口值'));
  295. } else {
  296. const re = /^([0-9]|[1-9]\d|[1-9]\d{2}|[1-9]\d{3}|[1-5]\d{4}|6[0-4]\d{3}|65[0-4]\d{2}|655[0-2]\d|6553[0-5])$/;
  297. const rsCheck = re.test(value);
  298. if (!rsCheck) {
  299. callback(new Error('请输入在[0-65535]之间的端口值'));
  300. } else {
  301. callback();
  302. }
  303. }
  304. }, 100);
  305. }
  306. // 验证端口是否在[0,65535]之间,非必填,isMust表示是否必填
  307. export function isCheckPort(rule, value, callback) {
  308. if (!value) {
  309. callback();
  310. }
  311. setTimeout(() => {
  312. if (value == '' || typeof (value) == undefined) {
  313. //callback(new Error('请输入端口值'));
  314. } else {
  315. const re = /^([0-9]|[1-9]\d|[1-9]\d{2}|[1-9]\d{3}|[1-5]\d{4}|6[0-4]\d{3}|65[0-4]\d{2}|655[0-2]\d|6553[0-5])$/;
  316. const rsCheck = re.test(value);
  317. if (!rsCheck) {
  318. callback(new Error('请输入在[0-65535]之间的端口值'));
  319. } else {
  320. callback();
  321. }
  322. }
  323. }, 100);
  324. }
  325. /* 金额*/
  326. export function validatMoney(rule, value, callback) {
  327. if (!value) {
  328. callback();
  329. }
  330. setTimeout(() => {
  331. const reg = /^-?\d{1,10}(?:\.\d{1,2})?$/;
  332. if(reg.test(value)){
  333. callback();
  334. }else{
  335. callback(new Error('请正确输入金额'));
  336. }
  337. }, 100);
  338. }
  339. /* 数值范围*/
  340. export function validatNum(rule, value, callback) {
  341. if (!value) {
  342. callback();
  343. }
  344. setTimeout(() => {
  345. const reg = /^-?\d{1,10}(?:\.\d{1,2})?$/;
  346. if(reg.test(value)){
  347. callback();
  348. }else{
  349. callback(new Error('请正确输入数值'));
  350. }
  351. }, 100);
  352. }
  353. /* 小写字母*/
  354. export function validateLowerCase(str) {
  355. const reg = /^[a-z]+$/;
  356. return reg.test(str);
  357. }
  358. /*保留2为小数*/
  359. export function validatetoFixedNew(str) {
  360. return str;
  361. }
  362. /* 验证key*/
  363. // export function validateKey(str) {
  364. // var reg = /^[a-z_\-:]+$/;
  365. // return reg.test(str);
  366. // }
  367. /* 大写字母*/
  368. export function validateUpperCase(str) {
  369. const reg = /^[A-Z]+$/;
  370. return reg.test(str);
  371. }
  372. /* 大小写字母*/
  373. export function validatAlphabets(str) {
  374. const reg = /^[A-Za-z]+$/;
  375. return reg.test(str);
  376. }