validate.js 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250
  1. import {
  2. validateIdcard
  3. } from './validate_idcard'
  4. /**
  5. * @param {string} path
  6. * @returns {Boolean}
  7. */
  8. export function isExternal(path) {
  9. return /^(https?:|mailto:|tel:)/.test(path)
  10. }
  11. /**
  12. * @param {string} str
  13. * @returns {Boolean}
  14. */
  15. export function validUsername(str) {
  16. const valid_map = ['admin', 'editor']
  17. return valid_map.indexOf(str.trim()) >= 0
  18. }
  19. /**
  20. * @param {string} url
  21. * @returns {Boolean}
  22. */
  23. export function validURL(url) {
  24. const reg = /^(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.,?'\\+&%$#=~_-]+))*$/
  25. return reg.test(url)
  26. }
  27. /**
  28. * @param {string} str
  29. * @returns {Boolean}
  30. */
  31. export function validLowerCase(str) {
  32. const reg = /^[a-z]+$/
  33. return reg.test(str)
  34. }
  35. /**
  36. * @param {string} str
  37. * @returns {Boolean}
  38. */
  39. export function validUpperCase(str) {
  40. const reg = /^[A-Z]+$/
  41. return reg.test(str)
  42. }
  43. /**
  44. * @param {string} str
  45. * @returns {Boolean}
  46. */
  47. export function validAlphabets(str) {
  48. const reg = /^[A-Za-z]+$/
  49. return reg.test(str)
  50. }
  51. /**
  52. * @param {string} email
  53. * @returns {Boolean}
  54. */
  55. // export function validEmail(email) {
  56. // const reg = /^(([^<>()\[\]\\.,;:\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,}))$/
  57. // return reg.test(email)
  58. // }
  59. /**
  60. * @param {string} str
  61. * @returns {Boolean}
  62. */
  63. export function isString(str) {
  64. if (typeof str === 'string' || str instanceof String) {
  65. return true
  66. }
  67. return false
  68. }
  69. /**
  70. * @param {Array} arg
  71. * @returns {Boolean}
  72. */
  73. export function isArray(arg) {
  74. if (typeof Array.isArray === 'undefined') {
  75. return Object.prototype.toString.call(arg) === '[object Array]'
  76. }
  77. return Array.isArray(arg)
  78. }
  79. // 身份证
  80. export function validIDcard(rule, value, cb) {
  81. if (value) {
  82. if (!validateIdcard(value)) {
  83. cb(new Error('身份证号格式错误'))
  84. } else {
  85. cb()
  86. }
  87. } else {
  88. cb()
  89. }
  90. }
  91. /**
  92. * 金额
  93. * @param {*} s
  94. */
  95. export function isAmount(s) {
  96. return /^\d{1,12}(\.\d{1,2})?$/.test(s)
  97. }
  98. export function validAmount(rule, value, cb) {
  99. if (!isAmount(value)) {
  100. cb(new Error('仅可以输入数字和小数点,保留小数点后两位'))
  101. } else {
  102. cb()
  103. }
  104. }
  105. /**
  106. * 数字
  107. * @param {*} s
  108. */
  109. export function isNumber(s, m, n) {
  110. var re = new RegExp('^(0|[1-9][0-9]*)$', 'gim')
  111. return re.test(s)
  112. }
  113. export function validNumber(rule, value, cb) {
  114. if(!isNumber(value)) {
  115. cb(new Error('请输入数字'))
  116. } else {
  117. cb()
  118. }
  119. }
  120. /**
  121. * 百分比 最大值100
  122. * @param {*} s
  123. */
  124. export function isPercentage(s) {
  125. return /^(\d?\d(\.\d{0,4})?|100(\.[0]{0,4})?)$/.test(s)
  126. }
  127. // 利率,百分百
  128. export function validPercentage(rule, value, cb) {
  129. if (!isPercentage(value)) {
  130. cb(new Error('仅可以输入数字和小数点,最多保留四位小数,最大值100'))
  131. } else {
  132. cb()
  133. }
  134. }
  135. export function validAdr(str) {
  136. return /^\d{1,}$/.test(str)
  137. }
  138. export function validAdress(rule, value, cb) {
  139. if(validAdr(value)) {
  140. cb(new Error('不可以只输入纯数字'))
  141. }else{
  142. cb()
  143. }
  144. }
  145. /**
  146. * 邮箱
  147. * @param {*} s
  148. */
  149. export function isEmail(s) {
  150. // return /^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+((.[a-zA-Z0-9_-]{2,3}){1,2})$/.test(s)
  151. return /^[A-Za-z\d]+([-_.][A-Za-z\d]+)*@([A-Za-z\d]+[-.])+[A-Za-z\d]{2,4}$/.test(s)
  152. }
  153. /**
  154. * 手机号码
  155. * @param {*} s
  156. */
  157. export function isMobile(s) {
  158. return /^[1][3|4|5|7|8|9][0-9]{9}$/.test(s)
  159. }
  160. /**
  161. * 电话号码
  162. * @param {*} s
  163. */
  164. export function isPhone(s) {
  165. // return /^([0-9]{3,4}-)?[0-9]{7,8}$/.test(s)
  166. return /^((0\d{2,3}(-)?\d{7,8})|(13[0-9]|14[01456879]|15[0-35-9]|16[2567]|17[0-8]|18[0-9]|19[0-35-9])\d{8})$/.test(s)
  167. }
  168. /**
  169. * 汉字
  170. * @param {*} s
  171. */
  172. export function isZhcn(s, m, n) {
  173. var re = new RegExp('^[\u2E80-\u9FFF]{' + m + ',' + n + '}$', 'gim')
  174. return re.test(s)
  175. }
  176. /**
  177. * 汉字、小括号
  178. * @param {Object} cb
  179. */
  180. export function isZh(s) {
  181. return /^[\u4e00-\u9fa5()]+$/.test(s)
  182. }
  183. /**********以下为公共验证方法***********/
  184. export function validEmail(rule, value, cb) {
  185. if (value) {
  186. if (!isEmail(value)) {
  187. cb(new Error('邮箱格式错误'))
  188. } else {
  189. cb()
  190. }
  191. } else {
  192. cb()
  193. }
  194. }
  195. export function validMobile(rule, value, cb) {
  196. if (value) {
  197. if (!isMobile(value)) {
  198. cb(new Error('请输入正确的手机号'))
  199. } else {
  200. cb()
  201. }
  202. } else {
  203. cb()
  204. }
  205. }
  206. export function validPhone(rule, value, cb) {
  207. if(!value) {
  208. cb()
  209. }else {
  210. if (!isPhone(value)) {
  211. cb(new Error('请输入正确的固定电话格式,例如xxxxxxxxxxx,xxxx-xxxxxxx'))
  212. } else {
  213. cb()
  214. }
  215. }
  216. }
  217. export function validZhcn(rule, value, cb) {
  218. if (!isZhcn(value, 1, 25)) {
  219. cb(new Error('仅可输入汉字'))
  220. } else {
  221. cb()
  222. }
  223. }
  224. export function validZh(rule, value, cb) {
  225. if(!isZh(value)) {
  226. cb(new Error('仅可以输入汉字和小括号'))
  227. }else {
  228. cb()
  229. }
  230. }