1. var regexEnum = {
  2. intege : "^-?[1-9]\\d*$", // 整数
  3. intege1 : "^[1-9]\\d*$", // 正整数
  4. intege2 : "^-[1-9]\\d*$", // 负整数
  5. num : "^([+-]?)\\d*\\.?\\d+$", // 数字
  6. num1 : "^([+]?)\\d*$", // 正数(正整数 + 0)
  7. num2 : "^-[1-9]\\d*|0$", // 负数(负整数 + 0)
  8. num3 : "^([+]?)\\d*\\.?\\d+$", // 正数
  9. decmal : "^([+-]?)\\d*\\.\\d+$", // 浮点数
  10. decmal1 : "^[1-9]\\d*.\\d*|0.\\d*[1-9]\\d*$", // 正浮点数
  11. decmal2 : "^-([1-9]\\d*.\\d*|0.\\d*[1-9]\\d*)$", // 负浮点数
  12. decmal3 : "^-?([1-9]\\d*.\\d*|0.\\d*[1-9]\\d*|0?.0+|0)$", // 浮点数
  13. decmal4 : "^[1-9]\\d*.\\d*|0.\\d*[1-9]\\d*|0?.0+|0$", // 非负浮点数(正浮点数 + 0)
  14. decmal5 : "^(-([1-9]\\d*.\\d*|0.\\d*[1-9]\\d*))|0?.0+|0$", // 非正浮点数(负浮点数 +
  15. // 0)
  16. email : "^\\w+((-\\w+)|(\\.\\w+))*\\@[A-Za-z0-9]+((\\.|-)[A-Za-z0-9]+)*\\.[A-Za-z0-9]+$", // 邮件
  17. color : "^[a-fA-F0-9]{6}$", // 颜色
  18. url : "^http[s]?:\\/\\/([\\w-]+\\.)+[\\w-]+([\\w-./?%&=]*)?$", // url
  19. chinese : "^[\\u4E00-\\u9FA5\\uF900-\\uFA2D]+$", // 仅中文
  20. ascii : "^[\\x00-\\xFF]+$", // 仅ACSII字符
  21. zipcode : "^\\d{6}$", // 邮编
  22. mobile : "^(13|15|18|14)[0-9]{9}$", // 手机
  23. ip4 : "^(25[0-5]|2[0-4]\\d|[0-1]\\d{2}|[1-9]?\\d)\\.(25[0-5]|2[0-4]\\d|[0-1]\\d{2}|[1-9]?\\d)\\.(25[0-5]|2[0-4]\\d|[0-1]\\d{2}|[1-9]?\\d)\\.(25[0-5]|2[0-4]\\d|[0-1]\\d{2}|[1-9]?\\d)$", // ip地址
  24. notempty : "^\\S+$", // 非空
  25. picture : "(.*)\\.(jpg|bmp|gif|ico|pcx|jpeg|tif|png|raw|tga)$", // 图片
  26. jpg : "(.*)\\.(jpg|gif)$", // 图片
  27. rar : "(.*)\\.(rar|zip|7zip|tgz)$", // 压缩文件
  28. date : "^\\d{4}(\\-|\\/|\.)\\d{1,2}\\1\\d{1,2}$", // 日期
  29. qq : "^[1-9]*[1-9][0-9]*$", // QQ号码
  30. tel : "^(([0\\+]\\d{2,3}-)?(0\\d{2,3})-)?(\\d{7,8})(-(\\d{3,}))?$", // 电话号码的函数(包括验证国内区号,国际区号,分机号)
  31. username : "^\\w+$", // 用来用户注册。匹配由数字、26个英文字母或者下划线组成的字符串
  32. letter : "^[A-Za-z]+$", // 字母
  33. letter_u : "^[A-Z]+$", // 大写字母
  34. letter_l : "^[a-z]+$", // 小写字母
  35. letter_num : "^\\w+$", // 匹配由数字、26个英文字母或者下划线组成的字符串
  36. idcard : "/(^/d{15}$)|(^/d{17}([0-9]|X)$)/", // 身份证
  37. htmlcode : "^[^\\\\'\"<>@#$&]+$", // 禁止输入html代码(特殊字符)
  38. uploadFile : "(.*)\\.(jpg|bmp|gif|png|jpeg|tif|pdf|doc|docx|xls|xlsx|ppt|pptx)$", // 图片
  39. };
  40.  
  41. /**
  42. * 校验文件扩展名
  43. *
  44. * @param str
  45. * @returns {Boolean}
  46. */
  47. function checkFile(str) {
  48. if (isEmpty(str)) {
  49. return true;
  50. }
  51. var strRegex = "(.jpg|.JPG|.gif|.GIF|.png|.PNG)$"; // 用于验证图片扩展名的正则表达式
  52. var re = new RegExp(strRegex);
  53. if (re.test(str)) {
  54. return (true);
  55. } else {
  56. return (false);
  57. }
  58. }
  59.  
  60. function checkExcelFile(str) {
  61. if (isEmpty(str)) {
  62. return true;
  63. }
  64. var strRegex = "(.xls)$";
  65. var re = new RegExp(strRegex);
  66. if (re.test(str)) {
  67. return (true);
  68. } else {
  69. return (false);
  70. }
  71. }
  72.  
  73. /**
  74. * 正则校验
  75. *
  76. * @param format
  77. * 格式
  78. * @param val
  79. * 值
  80. */
  81. function checkFormat(format, val) {
  82. if (isEmpty(val)) {
  83. if ("notempty" == format) {
  84. return false;
  85. }
  86. return true;
  87. }
  88. var reg = regexEnum[format];
  89. var r = val.match(reg);
  90. if (r == null)
  91. return false;
  92. return true;
  93. }
  94.  
  95. function isCardID(sId) {
  96. if (isEmpty(sId)) {
  97. return true;
  98. }
  99. var iSum = 0;
  100. if (!/^\d{17}(\d|x)$/i.test(sId))
  101. return "你输入的身份证长度或格式错误";
  102. sId = sId.replace(/x$/i, "a");
  103. if (aCity[parseInt(sId.substr(0, 2))] == null)
  104. return "你的身份证地区非法";
  105. sBirthday = sId.substr(6, 4) + "-" + Number(sId.substr(10, 2)) + "-"
  106. + Number(sId.substr(12, 2));
  107. var d = new Date(sBirthday.replace(/-/g, "/"));
  108. if (sBirthday != (d.getFullYear() + "-" + (d.getMonth() + 1) + "-" + d
  109. .getDate()))
  110. return "身份证上的出生日期非法";
  111. for ( var i = 17; i >= 0; i--)
  112. iSum += (Math.pow(2, i) % 11) * parseInt(sId.charAt(17 - i), 11);
  113. if (iSum % 11 != 1)
  114. return "你输入的身份证号非法";
  115. return true;// aCity[parseInt(sId.substr(0,2))]+","+sBirthday+","+(sId.substr(16,1)%2?"男":"女")
  116. }
  117.  
  118. // 短时间,形如 (13:04:06)
  119. function isTime(str) {
  120. if (isEmpty(str)) {
  121. return true;
  122. }
  123. var a = str.match(/^(\d{1,2})(:)?(\d{1,2})\2(\d{1,2})$/);
  124. if (a == null) {
  125. return false;
  126. }
  127. if (a[1] > 24 || a[3] > 60 || a[4] > 60) {
  128. return false;
  129. }
  130. return true;
  131. }
  132.  
  133. //短时间,形如 (13:04)
  134. function isTimeHM(str) {
  135. if (isEmpty(str)) {
  136. return false;
  137. }
  138. var a = str.match(/^(\d{1,2})(:)?(\d{1,2})$/);
  139. if (a == null) {
  140. alert("hm"+a);
  141. return false;
  142. }
  143. if (a[1] > 24 || a[3] > 60) {
  144. alert("hm"+a[1]);
  145. alert("hm"+a[3]);
  146. return false;
  147. }
  148. return true;
  149. }
  150.  
  151. // 短日期,形如 (2003-12-05)
  152. function isDate(str) {
  153. if (isEmpty(str)) {
  154. return true;
  155. }
  156. var r = str.match(/^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2})$/);
  157. if (r == null)
  158. return false;
  159. var d = new Date(r[1], r[3] - 1, r[4]);
  160. return (d.getFullYear() == r[1] && (d.getMonth() + 1) == r[3] && d
  161. .getDate() == r[4]);
  162. }
  163.  
  164. // 长时间,形如 (2003-12-05 13:04:06)
  165. function isDateTime(str) {
  166. if (isEmpty(str)) {
  167. return true;
  168. }
  169. var reg = /^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2}) (\d{1,2}):(\d{1,2}):(\d{1,2})$/;
  170. var r = str.match(reg);
  171. if (r == null)
  172. return false;
  173. var d = new Date(r[1], r[3] - 1, r[4], r[5], r[6], r[7]);
  174. return (d.getFullYear() == r[1] && (d.getMonth() + 1) == r[3]
  175. && d.getDate() == r[4] && d.getHours() == r[5]
  176. && d.getMinutes() == r[6] && d.getSeconds() == r[7]);
  177. }
  178.  
  179. // 空字符串
  180. function isEmpty(str) {
  181. if ((str == null) || (str.toString().replace(/\s+/g, "") == "")) {
  182. return true;
  183. } else {
  184. return false;
  185. }
  186. }
  187.  
  188. function isNotEmpty(str) {
  189. if ((str == null) || (str.toString().replace(/\s+/g, "") == "")) {
  190. return false;
  191. } else {
  192. return true;
  193. }
  194. }
  195.  
  196. // 数字最值(最小值,最大值,必须输入)
  197. function isNumRange(str, minNum, maxNum) {
  198. if (isEmpty(str)) {
  199. return true;
  200. }
  201. var num = parseFloat(str);
  202. if (!isEmpty(minNum) && num < minNum) {
  203. return false;
  204. } else if (!isEmpty(maxNum) && num > maxNum) {
  205. return false;
  206. } else {
  207. return true;
  208. }
  209. }
  210.  
  211. // 字符串最大长度
  212. function isMaxLength(str, maxLength) {
  213. if (isEmpty(str)) {
  214. return true;
  215. }
  216. var len = str.length;
  217. if (len > maxLength) {
  218. return false;
  219. } else {
  220. return true;
  221. }
  222. }
  223.  
  224. // 字符串最小长度
  225. function isMinLength(str, minLength) {
  226. if (isEmpty(str)) {
  227. return true;
  228. }
  229. var len = str.length;
  230. if (len < minLength) {
  231. return false;
  232. } else {
  233. return true;
  234. }
  235. }
  236.  
  237. // 小数精确度(maxL:整数部分长度,maxF:小数部分长度)
  238. function isMaxLengthForDouble(str, maxL, maxF) {
  239. if (isEmpty(str)) {
  240. return true;
  241. }
  242. var vals = str.split(".");
  243.  
  244. if ((vals[0].length > maxL) || (vals[1].length > maxF)) {
  245. return false;
  246. } else {
  247. return true;
  248. }
  249. }
  250.  
  251. // 字符串固定长度
  252. function isLength(str, length) {
  253. if (isEmpty(str)) {
  254. return true;
  255. }
  256. var len = str.length;
  257. if (len != length) {
  258. return false;
  259. } else {
  260. return true;
  261. }
  262. }
  263.  
  264. // 失去焦点时do
  265. // obj校验(jquery)对象,objSpan提示对象, fun执行函数
  266. function onBlurShow(obj, fun) {
  267. obj.blur(fun);
  268. }
  269.  
  270. // 时间格式转化 date转化成String 方法date.format("时间格式")
  271. Date.prototype.format = function(format) {
  272. var o = {
  273. "M+" : this.getMonth() + 1, // month
  274. "d+" : this.getDate(), // day
  275. "h+" : this.getHours(), // hour
  276. "m+" : this.getMinutes(), // minute
  277. "s+" : this.getSeconds(), // second
  278. "q+" : Math.floor((this.getMonth() + 3) / 3), // quarter
  279. "S" : this.getMilliseconds()
  280. // millisecond
  281. };
  282. if (/(y+)/.test(format))
  283. format = format.replace(RegExp.$1, (this.getFullYear() + "")
  284. .substr(4 - RegExp.$1.length));
  285. for ( var k in o)
  286. if (new RegExp("(" + k + ")").test(format))
  287. format = format.replace(RegExp.$1, RegExp.$1.length == 1 ? o[k]
  288. : ("00" + o[k]).substr(("" + o[k]).length));
  289. return format;
  290. };
  291.  
  292. // 最小日期
  293. function isMinDate(date, minDate) {
  294. if (isEmpty(date)) {
  295. return true;
  296. }
  297. var r1 = date.match(/^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2})$/);
  298. var d1 = new Date(r1[1], r1[3] - 1, r1[4]);
  299. var d2 = new Date();
  300. d2 = new Date(d2.getFullYear(), d2.getMonth(), d2.getDate());
  301. if (minDate != "now") {
  302. var r2 = minDate.match(/^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2})$/);
  303. d2 = new Date(r2[1], r2[3] - 1, r2[4]);
  304. }
  305.  
  306. var t1 = d1.getTime();
  307. var t2 = d2.getTime();
  308.  
  309. if (t1 < t2) {
  310. return false;
  311. } else {
  312. return true;
  313. }
  314.  
  315. }
  316.  
  317. // 最大日期
  318. function isMaxDate(date, maxDate) {
  319. if (isEmpty(date)) {
  320. return true;
  321. }
  322. var r1 = date.match(/^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2})$/);
  323. var d1 = new Date(r1[1], r1[3] - 1, r1[4]);
  324. var d2 = new Date();
  325. d2 = new Date(d2.getFullYear(), d2.getMonth(), d2.getDate());
  326. if (maxDate != "now") {
  327. var r2 = maxDate.match(/^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2})$/);
  328. d2 = new Date(r2[1], r2[3] - 1, r2[4]);
  329. }
  330.  
  331. var t1 = d1.getTime();
  332. var t2 = d2.getTime();
  333.  
  334. if (t1 > t2) {
  335. return false;
  336. } else {
  337. return true;
  338. }
  339.  
  340. }
  341.  
  342. // 字符串截取
  343. function spliceStr(str) {
  344. if (!isEmpty(str)) {
  345. if (str.length > 5) {
  346. str = str.substr(0, 5) + "..";
  347. return str;
  348. }
  349. } else {
  350. return "";
  351. }
  352. }
  353.  
  354. /**
  355. * 判断数组是否有重复元素
  356. *
  357. * @param elementArray
  358. * @returns {Boolean}
  359. */
  360. function isDuplicate(elementArray) {
  361. var nary = elementArray.sort();
  362. for ( var i = 0; i < nary.length; i++) {
  363. if (nary[i] == nary[i + 1]) {
  364. return true;
  365. }
  366. }
  367. return false;
  368. }
  369.  
  370. /**
  371. * 去掉字符串左边空格
  372. *
  373. * @param str
  374. * @returns
  375. */
  376. function ltrim(str) {
  377. var pattern = new RegExp("^[\\s]+", "gi");
  378. return str.replace(pattern, "");
  379. }
  380.  
  381. /**
  382. * 去掉字符串右边空格
  383. *
  384. * @param str
  385. * @returns
  386. */
  387. function rtrim(str) {
  388. var pattern = new RegExp("[\\s]+$", "gi");
  389. return str.replace(pattern, "");
  390. }
  391.  
  392. /**
  393. * 去掉字符串左右空格
  394. *
  395. * @param str
  396. * @returns
  397. */
  398. function trim(str) {
  399. return rtrim(ltrim(str));
  400. }
  401.  
  402. // 开始时间 - 结束时间 yyyy-mm-dd
  403. function check(startTime, endTime) {
  404. if (startTime.length > 0 && endTime.length > 0) {
  405. var startTmp = startTime.split("-");
  406. var endTmp = endTime.split("-");
  407. var sd = new Date(startTmp[0], startTmp[1], startTmp[2]);
  408. var ed = new Date(endTmp[0], endTmp[1], endTmp[2]);
  409. if (sd.getTime() > ed.getTime()) {
  410. return false;
  411. }
  412. }
  413. return true;
  414. }
  415.  
  416. // 格式 yyyy-MM
  417. function checkTime(startTime, endTime) {
  418.  
  419. if (startTime.length > 0 && endTime.length > 0) {
  420. startTime = startTime + "/01";
  421. endTime = endTime + "/01";
  422. var startTimeTmp = startTime.replace(/-/g, "/");
  423. var endTimeTmp = endTime.replace(/-/g, "/");
  424. var d1 = new Date(Date.parse(startTimeTmp));
  425. var d2 = new Date(Date.parse(endTimeTmp));
  426. if (d1 > d2) {
  427. return false;
  428. }
  429. }
  430. return true;
  431. }
  432.  
  433. // 格式 HH:mm:ss
  434. function compareTime(interviewDate, startTime, endTime) {
  435. var startDate = interviewDate + " " + startTime;
  436. var endDate = interviewDate + " " + endTime;
  437. if (startDate.length > 0 && endDate.length > 0) {
  438.  
  439. var startDateTemp = startDate.split(" ");
  440. var endDateTemp = endDate.split(" ");
  441. var arrStartDate = startDateTemp[0].split("-");
  442. var arrEndDate = endDateTemp[0].split("-");
  443. var arrStartTime = startDateTemp[1].split(":");
  444. var arrEndTime = endDateTemp[1].split(":");
  445. var allStartDate = new Date(arrStartDate[0], arrStartDate[1],arrStartDate[2], arrStartTime[0], arrStartTime[1],arrStartTime[2]);
  446. var allEndDate = new Date(arrEndDate[0], arrEndDate[1], arrEndDate[2],arrEndTime[0], arrEndTime[1], arrEndTime[2]);
  447.  
  448. if (allStartDate.getTime() >= allEndDate.getTime()) {
  449. return false;
  450. } else {
  451. return true;
  452. }
  453. } else {
  454. alert("时间不能为空");
  455. return false;
  456. }
  457. }
  458.  
  459. function CurentTime() {
  460. var now = new Date();
  461. var year = now.getFullYear(); // 年
  462. var month = now.getMonth() + 1; // 月
  463. var day = now.getDate(); // 日
  464. var hh = now.getHours(); // 时
  465. var mm = now.getMinutes(); // 分
  466. var clock = year + "-";
  467. if (month < 10)
  468. clock += "0";
  469. clock += month + "-";
  470. if (day < 10)
  471. clock += "0";
  472. clock += day + " ";
  473. if (hh < 10)
  474. clock += "0";
  475. clock += hh + ":";
  476. if (mm < 10)
  477. clock += '0';
  478. clock += mm;
  479. return (clock);
  480. }
  481.  
  482. function CurentYearMonth() {
  483. var now = new Date();
  484. var year = now.getFullYear(); // 年
  485. var month = now.getMonth() + 1; // 月
  486. var clock = year + "-";
  487. if (month < 10)
  488. clock += "0";
  489. clock += month;
  490. return (clock);
  491. }
  492.  
  493. // 是否在数组内
  494. function in_array(needle, haystack) {
  495. if (typeof needle == 'string' || typeof needle == 'number') {
  496. for ( var i in haystack) {
  497. if (haystack[i] == needle) {
  498. return true;
  499. }
  500. }
  501. }
  502. return false;
  503. }
  504.  
  505. /**
  506. * 去掉字符串最后一个逗号
  507. * @param str
  508. * @returns
  509. */
  510. function delComma(str)
  511. {
  512. if(str.charAt(str.length-1) == ",")
  513. {
  514. str = str.substring(0, str.length-1);
  515. }
  516. return str;
  517. }
  518.  
  519. /**
  520. * 比较开始时间和结束时间
  521. * @param currDate
  522. * @param inputDate
  523. * @returns {Boolean}
  524. */
  525. function judegeDate(currDate,inputDate){
  526.  
  527. if(currDate.length>0 && inputDate.length>0){
  528. var startTmp=currDate.split("-");
  529. var endTmp=inputDate.split("-");
  530. var sd=new Date(startTmp[0],startTmp[1],startTmp[2]);
  531. var ed=new Date(endTmp[0],endTmp[1],endTmp[2]);
  532. if(sd.getTime() > ed.getTime()){
  533. return false;
  534. }
  535. }
  536. return true;
  537. }
  538.  
  539. /**
  540. * 日期校验正则表达式
  541. * @param str
  542. * @returns {Boolean}
  543. */
  544. function isdate(str){
  545. var reg = /^((((((0[48])|([13579][26])|([2468][048]))00)|([0-9][0-9]((0[48])|([13579][26])|([2468][048]))))-02-29)|(((000[1-9])|(00[1-9][0-9])|(0[1-9][0-9][0-9])|([1-9][0-9][0-9][0-9]))-((((0[13578])|(1[02]))-31)|(((0[1,3-9])|(1[0-2]))-(29|30))|(((0[1-9])|(1[0-2]))-((0[1-9])|(1[0-9])|(2[0-8]))))))$/i;
  546. if (reg.test(str)) return true;
  547. return false;
  548. }
  549.  
  550. /**
  551. * 格式化日期
  552. * @param value
  553. * @returns {String}
  554. */
  555. function formatDate(value){
  556. var d = new Date(value);
  557. var mon = d.getMonth() + 1;
  558. var day = d.getDate();
  559. var hours = d.getHours();
  560. var minute = d.getMinutes();
  561. var second = d.getSeconds();
  562. return d.getFullYear() + "-" + (mon >= 10 ? mon : "0" + mon) + "-" + (day >= 10 ? day : "0" + day) + " " + (hours >= 10 ? hours : "0" + hours) + ":" + (minute >= 10 ? minute : "0" + minute) + ":" + (second >= 10 ? second : "0" + second);
  563. }
  564.  
  565. function checkSearchDateTimeBox(strBeginId,strEndId){
  566. var beginvalue = $('#' + strBeginId).datetimebox('getValue');
  567. var endvalue = $('#' + strEndId).datetimebox('getValue');
  568. if (endvalue != '' && beginvalue!=''){
  569. return (endvalue >= beginvalue);
  570. }
  571. return true;
  572. }

js前端数据验证JS工具的更多相关文章

  1. 【QRcode二维码】:使用JS前端插件QRcode.js生成二维码

    1.先简单说一下jquery-qrcode,这个开源的三方库(可以从https://github.com/jeromeetienne/jquery-qrcode 获取), qrcode.js 是实现二 ...

  2. JS前端数据格式化

    当我们从后台取了数据,但是我们希望在前台统一显示格式时,我们可能需要格式化数据. 今天正好总结一下前端JS格式化数据的几个方法: 1. toFixed() 方法   可把 Number 四舍五入为指定 ...

  3. JS 前端格式化JSON字符串工具

    JSON格式化工具,简易实现.作为技术宅,直接上代码,供大家使用.前提:一定要引入jquery哦. <!DOCTYPE html> <html lang="en" ...

  4. JS前端数据多条件筛选(商品搜索)

    有时候也会需要在前端进行数据筛选,增强交互体验.当数据可用的筛选条件较多时,把逻辑写死会给后期维护带来很大麻烦.下面是我自己写的一个简单的筛选器,筛选条件可以根据数据包含的字段动态设置. 仿照京东的筛 ...

  5. 使用jquery.validate组件进行前端数据验证并实现异步提交前验证检查

    学习如鹏网掌上组的项目开发,使用到了前端验证,视频里使用的ValidateForm验证框架,但是我使用的Hui的框架中使用的是jquery.validate验证框架 所以自行学习jquery.vali ...

  6. 【ASP.NET基础】客户端、服务器端的数据验证 + CKEditer

    1, 客户端 用Javascript进行验证,直接提示用户输入的数据是否符合规范,是否合法. 这样体验行比较好,客户端立即就可以得到反馈,而且减少了服务器端的数据交互. 这样前端数据验证并不是很安全, ...

  7. asp.net core mvc视频A:笔记4-1.数据验证

    开发建议:永远不要相信客户端提交过来的数据!!! 前端数据验证定位:提高用户体验,仅此而已! 后端数据验证定位:保证系统安全与数据完整!!! 实例:用户登录验证 定义一个用户登录类 在用户登录类基础上 ...

  8. .NET MVC model数据验证

    MVC提供了很方便的数据验证,只需要在model里加入相关的正则等,那么就会在前台里生成相关的验证脚本.需要引用两个js文件: jquery.validate.min.js jquery.valida ...

  9. 我这么玩Web Api(二):数据验证,全局数据验证与单元测试

    目录 一.模型状态 - ModelState 二.数据注解 - Data Annotations 三.自定义数据注解 四.全局数据验证 五.单元测试   一.模型状态 - ModelState 我理解 ...

随机推荐

  1. 转:redis-cli 命令总结

    redis-cli常用命令,原文地址:https://maoxian.de/2015/08/1342.html Redis提供了丰富的命令(command)对数据库和各种数据类型进行操作,这些comm ...

  2. Web for pentester_writeup之Commands injection篇

    Web for pentester_writeup之Commands injection篇 Commands injection(命令行注入) 代码注入和命令行注入有什么区别呢,代码注入涉及比较广泛, ...

  3. MIT线性代数:9.线性相关,基,维数。

  4. 学习笔记63_python反射

    ####反射预备知识一########### __call__ 对象后面加括号,触发执行. python中,类的默认的内置方法,有一个名为__call__,如 class foo: def  __in ...

  5. Vmware虚拟机的安装

    Vmware WorkStation是一款桌面计算机虚拟软件,能够让用户在单一主机上同时运行多个不同的操作系统.每个虚拟操作系统的硬盘分区.数据配置都是独立的,同时又可以将多台虚拟机构建为一个局域网. ...

  6. nuxt.js 部署静态页面[dist]到gh-pages

    一. 1.添加package.json { "name": "nuxtweb001", "version": "1.0.0&quo ...

  7. html与css连接代码

    demo01.html: <!DOCTYPE html><html> <head>  <meta charset="utf-8">  ...

  8. Error response from daemon ... no space left on device docker启动容器服务报错

    docker 启动容器服务的时候,报错no space left on device 1. 检查磁盘是否用光 3.检查inode是否耗光,从截图看到是inode耗光导致出现问题: 进入到/run里面看 ...

  9. [剑指offer] 二叉搜索树的后序遍历序列 (由1个后续遍历的数组判断它是不是BST)

    ①题目 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果.如果是则输出Yes,否则输出No.假设输入的数组的任意两个数字都互不相同. ②思路 1.后续遍历的数组里,最后一个元素是根. 2 ...

  10. pug参考文档

    1. API express框架的渲染模板有多种选择,官方的例子是Pug,网上找了一下,Pug没有可以参考的中文文档,于是自己动手丰衣足食.翻译水平一般,各位凑合着看吧. 1.1 开始 安装 通过np ...