不錯(cuò)的JS驗(yàn)證~~~~~~~~~~~~~~~~~~~~~~~~~ 用途:校驗(yàn)ip地址的格式 輸入:strIP:ip地址 返回:如果通過(guò)驗(yàn)證返回true,否則返回false; */ function isIP(strIP) { if (isNull(strIP)) return false; var re=/^(\d+)\.(\d+)\.(\d+)\.(\d+)$/g //匹配IP地址的正則表達(dá)式 if(re.test(strIP)) { if( RegExp.$1 <256 && RegExp.$2<256 && RegExp.$3<256 && RegExp.$4<256) return true; } return false; } /* 用途:檢查輸入字符串是否為空或者全部都是空格 輸入:str 返回: 如果全是空返回true,否則返回false */ function isNull( str ){ if ( str == "" ) return true; var regu = "^[ ]+$"; var re = new RegExp(regu); return re.test(str); } /* 用途:檢查輸入對(duì)象的值是否符合整數(shù)格式 輸入:str 輸入的字符串 返回:如果通過(guò)驗(yàn)證返回true,否則返回false */ function isInteger( str ){ var regu = /^[-]{0,1}[0-9]{1,}$/; return regu.test(str); } /* 用途:檢查輸入手機(jī)號(hào)碼是否正確 輸入: s:字符串 返回: 如果通過(guò)驗(yàn)證返回true,否則返回false */ function checkMobile( s ){ var regu =/^[1][3][0-9]{9}$/; var re = new RegExp(regu); if (re.test(s)) { return true; }else{ return false; } } /* 用途:檢查輸入字符串是否符合正整數(shù)格式 輸入: s:字符串 返回: 如果通過(guò)驗(yàn)證返回true,否則返回false */ function isNumber( s ){ var regu = "^[0-9]+$"; var re = new RegExp(regu); if (s.search(re) != -1) { return true; } else { return false; } } /* 用途:檢查輸入字符串是否是帶小數(shù)的數(shù)字格式,可以是負(fù)數(shù) 輸入: s:字符串 返回: 如果通過(guò)驗(yàn)證返回true,否則返回false */ function isDecimal( str ){ if(isInteger(str)) return true; var re = /^[-]{0,1}(\d+)[\.]+(\d+)$/; if (re.test(str)) { if(RegExp.$1==0&&RegExp.$2==0) return false; return true; } else { return false; } } /* 用途:檢查輸入對(duì)象的值是否符合端口號(hào)格式 輸入:str 輸入的字符串 返回:如果通過(guò)驗(yàn)證返回true,否則返回false */ function isPort( str ){ return (isNumber(str) && str<65536); } /* 用途:檢查輸入對(duì)象的值是否符合E-Mail格式 輸入:str 輸入的字符串 返回:如果通過(guò)驗(yàn)證返回true,否則返回false */ function isEmail( str ){ var myReg = /^[-_A-Za-z0-9]+@([_A-Za-z0-9]+\.)+[A-Za-z0-9]{2,3}$/; if(myReg.test(str)) return true; return false; } /* 用途:檢查輸入字符串是否符合金額格式 格式定義為帶小數(shù)的正數(shù),小數(shù)點(diǎn)后最多三位 輸入: s:字符串 返回: 如果通過(guò)驗(yàn)證返回true,否則返回false */ function isMoney( s ){ var regu = "^[0-9]+[\.][0-9]{0,3}$"; var re = new RegExp(regu); if (re.test(s)) { return true; } else { return false; } } /* 用途:檢查輸入字符串是否只由英文字母和數(shù)字和下劃線組成 輸入: s:字符串 返回: 如果通過(guò)驗(yàn)證返回true,否則返回false */ function isNumberOr_Letter( s ){//判斷是否是數(shù)字或字母 var regu = "^[0-9a-zA-Z\_]+$"; var re = new RegExp(regu); if (re.test(s)) { return true; }else{ return false; } } /* 用途:檢查輸入字符串是否只由英文字母和數(shù)字組成 輸入: s:字符串 返回: 如果通過(guò)驗(yàn)證返回true,否則返回false */ function isNumberOrLetter( s ){//判斷是否是數(shù)字或字母 var regu = "^[0-9a-zA-Z]+$"; var re = new RegExp(regu); if (re.test(s)) { return true; }else{ return false; } } /* 用途:檢查輸入字符串是否只由漢字、字母、數(shù)字組成 輸入: value:字符串 返回: 如果通過(guò)驗(yàn)證返回true,否則返回false */ function isChinaOrNumbOrLett( s ){//判斷是否是漢字、字母、數(shù)字組成 var regu = "^[0-9a-zA-Z\u4e00-\u9fa5]+$"; var re = new RegExp(regu); if (re.test(s)) { return true; }else{ return false; } } /* 用途:判斷是否是日期 輸入:date:日期;fmt:日期格式 返回:如果通過(guò)驗(yàn)證返回true,否則返回false */ function isDate( date, fmt ) { if (fmt==null) fmt="yyyyMMdd"; var yIndex = fmt.indexOf("yyyy"); if(yIndex==-1) return false; var year = date.substring(yIndex,yIndex+4); var mIndex = fmt.indexOf("MM"); if(mIndex==-1) return false; var month = date.substring(mIndex,mIndex+2); var dIndex = fmt.indexOf("dd"); if(dIndex==-1) return false; var day = date.substring(dIndex,dIndex+2); if(!isNumber(year)||year>"2100" || year< "1900") return false; if(!isNumber(month)||month>"12" || month< "01") return false; if(day>getMaxDay(year,month) || day< "01") return false; return true; } function getMaxDay(year,month) { if(month==4||month==6||month==9||month==11) return "30"; if(month==2) if(year%4==0&&year%100!=0 || year%400==0) return "29"; else return "28"; return "31"; } /* 用途:字符1是否以字符串2結(jié)束 輸入:str1:字符串;str2:被包含的字符串 返回:如果通過(guò)驗(yàn)證返回true,否則返回false */ function isLastMatch(str1,str2) { var index = str1.lastIndexOf(str2); if(str1.length==index+str2.length) return true; return false; } /* 用途:字符1是否以字符串2開(kāi)始 輸入:str1:字符串;str2:被包含的字符串 返回:如果通過(guò)驗(yàn)證返回true,否則返回false */ function isFirstMatch(str1,str2) { var index = str1.indexOf(str2); if(index==0) return true; return false; } /* 用途:字符1是包含字符串2 輸入:str1:字符串;str2:被包含的字符串 返回:如果通過(guò)驗(yàn)證返回true,否則返回false */ function isMatch(str1,str2) { var index = str1.indexOf(str2); if(index==-1) return false; return true; } /* 用途:檢查輸入的起止日期是否正確,規(guī)則為兩個(gè)日期的格式正確, 且結(jié)束如期>=起始日期 輸入: startDate:起始日期,字符串 endDate:結(jié)束如期,字符串 返回: 如果通過(guò)驗(yàn)證返回true,否則返回false */ function checkTwoDate( startDate,endDate ) { if( !isDate(startDate) ) { alert("起始日期不正確!"); return false; } else if( !isDate(endDate) ) { alert("終止日期不正確!"); return false; } else if( startDate > endDate ) { alert("起始日期不能大于終止日期!"); return false; } return true; } /* 用途:檢查輸入的Email信箱格式是否正確 輸入: strEmail:字符串 返回: 如果通過(guò)驗(yàn)證返回true,否則返回false */ function checkEmail(strEmail) { //var emailReg = /^[_a-z0-9]+@([_a-z0-9]+\.)+[a-z0-9]{2,3}$/; var emailReg = /^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$/; if( emailReg.test(strEmail) ){ return true; }else{ alert("您輸入的Email地址格式不正確!"); return false; } } /* 用途:檢查輸入的電話號(hào)碼格式是否正確 輸入: strPhone:字符串 返回: 如果通過(guò)驗(yàn)證返回true,否則返回false */ function checkPhone( strPhone ) { var phoneRegWithArea = /^[0][1-9]{2,3}-[0-9]{5,10}$/; var phoneRegNoArea = /^[1-9]{1}[0-9]{5,8}$/; var prompt = "您輸入的電話號(hào)碼不正確!" if( strPhone.length > 9 ) { if( phoneRegWithArea.test(strPhone) ){ return true; }else{ alert( prompt ); return false; } }else{ if( phoneRegNoArea.test( strPhone ) ){ return true; }else{ alert( prompt ); return false; } } } /* 用途:檢查復(fù)選框被選中的數(shù)目 輸入: checkboxID:字符串 返回: 返回該復(fù)選框中被選中的數(shù)目 */ function checkSelect( checkboxID ) { var check = 0; var i=0; if( document.all(checkboxID).length > 0 ) { for( i=0; i<document.all(checkboxID).length; i++ ) { if( document.all(checkboxID).item( i ).checked ) { check += 1; } } }else{ if( document.all(checkboxID).checked ) check = 1; } return check; } function getTotalBytes(varField) { if(varField == null) return -1; var totalCount = 0; for (i = 0; i< varField.value.length; i++) { if (varField.value.charCodeAt(i) > 127) totalCount += 2; else totalCount++ ; } return totalCount; } function getFirstSelectedValue( checkboxID ){ var value = null; var i=0; if( document.all(checkboxID).length > 0 ){ for( i=0; i<document.all(checkboxID).length; i++ ){ if( document.all(checkboxID).item( i ).checked ){ value = document.all(checkboxID).item(i).value; break; } } } else { if( document.all(checkboxID).checked ) value = document.all(checkboxID).value; } return value; } function getFirstSelectedIndex( checkboxID ){ var value = -2; var i=0; if( document.all(checkboxID).length > 0 ){ for( i=0; i<document.all(checkboxID).length; i++ ) { if( document.all(checkboxID).item( i ).checked ) { value = i; break; } } } else { if( document.all(checkboxID).checked ) value = -1; } return value; } function selectAll( checkboxID,status ){ if( document.all(checkboxID) == null) return; if( document.all(checkboxID).length > 0 ){ for( i=0; i<document.all(checkboxID).length; i++ ){ document.all(checkboxID).item( i ).checked = status; } } else { document.all(checkboxID).checked = status; } } function selectInverse( checkboxID ) { if( document.all(checkboxID) == null) return; if( document.all(checkboxID).length > 0 ) { for( i=0; i<document.all(checkboxID).length; i++ ) { document.all(checkboxID).item( i ).checked = !document.all(checkboxID).item( i ).checked; } } else { document.all(checkboxID).checked = !document.all(checkboxID).checked; } } function checkDate( value ) { if(value=='') return true; if(value.length!=8 || !isNumber(value)) return false; var year = value.substring(0,4); if(year>"2100" || year< "1900") return false; var month = value.substring(4,6); if(month>"12" || month< "01") return false; var day = value.substring(6,8); if(day>getMaxDay(year,month) || day< "01") return false; return true; } /* 用途:檢查輸入的起止日期是否正確,規(guī)則為兩個(gè)日期的格式正確或都為空 且結(jié)束日期>=起始日期 輸入: startDate:起始日期,字符串 endDate: 結(jié)束日期,字符串 返回: 如果通過(guò)驗(yàn)證返回true,否則返回false */ function checkPeriod( startDate,endDate ) { if( !checkDate(startDate) ) { alert("起始日期不正確!"); return false; } else if( !checkDate(endDate) ) { alert("終止日期不正確!"); return false; } else if( startDate > endDate ) { alert("起始日期不能大于終止日期!"); return false; } return true; } /* 用途:檢查證券代碼是否正確 輸入: secCode:證券代碼 返回: 如果通過(guò)驗(yàn)證返回true,否則返回false */ function checkSecCode( secCode ) { if( secCode.length !=6 ){ alert("證券代碼長(zhǎng)度應(yīng)該為6位"); return false; } if(!isNumber( secCode ) ){ alert("證券代碼只能包含數(shù)字"); return false; } return true; } /**************************************************** function:cTrim(sInputString,iType) description:字符串去空格的函數(shù) parameters:iType:1=去掉字符串左邊的空格 2=去掉字符串左邊的空格 0=去掉字符串左邊和右邊的空格 return value:去掉空格的字符串 ****************************************************/ function cTrim(sInputString,iType) { var sTmpStr = ' '; var i = -1; if(iType == 0 || iType == 1) { while(sTmpStr == ' ') { ++i; sTmpStr = sInputString.substr(i,1); } sInputString = sInputString.substring(i); } if(iType == 0 || iType == 2) { sTmpStr = ' '; i = sInputString.length; while(sTmpStr == ' ') { --i; sTmpStr = sInputString.substr(i,1); } sInputString = sInputString.substring(0,i+1); } return sInputString; }

Hei?e KI -Werkzeuge

Undress AI Tool
Ausziehbilder kostenlos

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem v?llig kostenlosen KI-Gesichtstausch-Tool aus!

Hei?er Artikel

Hei?e Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Es gibt drei g?ngige M?glichkeiten, HTTP-Anforderungen in Node.js zu initiieren: Verwenden Sie integrierte Module, Axios und Knotenfetch. 1. Verwenden Sie das integrierte HTTP/HTTPS-Modul ohne Abh?ngigkeiten, das für grundlegende Szenarien geeignet ist, jedoch eine manuelle Verarbeitung von Datengen?hten und Fehlerüberwachung erfordert, z. 2.Axios ist eine auf Versprechen basierende Bibliothek von Drittanbietern. Es verfügt über eine kurze Syntax und leistungsstarke Funktionen, unterstützt Async/Auseait, automatische JSON -Konvertierung, Interceptor usw. Es wird empfohlen, asynchrone Anforderungsvorg?nge zu vereinfachen. 3.Node-Fetch bietet einen Stil ?hnlich dem Browser-Abruf, basierend auf Versprechen und einfacher Syntax

JavaScript -Datentypen sind in primitive Typen und Referenztypen unterteilt. Zu den primitiven Typen geh?ren String, Anzahl, Boolesche, Null, undefiniertes und Symbol. Die Werte sind unver?nderlich und Kopien werden bei der Zuweisung von Werten kopiert, sodass sie sich nicht gegenseitig beeinflussen. Referenztypen wie Objekte, Arrays und Funktionen speichern Speicheradressen, und Variablen, die auf dasselbe Objekt zeigen, wirkt sich gegenseitig aus. Typeof und Instanz k?nnen verwendet werden, um die Typen zu bestimmen, aber auf die historischen Probleme der TypeOfnull zu achten. Das Verst?ndnis dieser beiden Arten von Unterschieden kann dazu beitragen, einen stabileren und zuverl?ssigeren Code zu schreiben.

Hallo, JavaScript -Entwickler! Willkommen in den JavaScript -Nachrichten dieser Woche! Diese Woche konzentrieren wir uns auf: Oracas Markenstreit mit Deno, neue JavaScript -Zeitobjekte werden von Browsern, Google Chrome -Updates und einigen leistungsstarken Entwickler -Tools unterstützt. Fangen wir an! Der Markenstreit von Oracle mit dem Versuch von Deno Oracle, ein "JavaScript" -Marke zu registrieren, hat Kontroversen verursacht. Ryan Dahl, der Sch?pfer von Node.js und Deno, hat eine Petition zur Absage der Marke eingereicht, und er glaubt, dass JavaScript ein offener Standard ist und nicht von Oracle verwendet werden sollte

Versprechen ist der Kernmechanismus für den Umgang mit asynchronen Operationen in JavaScript. Das Verst?ndnis von Kettenanrufen, Fehlerbehebung und Kombination ist der Schlüssel zum Beherrschen ihrer Anwendungen. 1. Der Kettenaufruf gibt ein neues Versprechen durch .then () zurück, um asynchrone Prozessverkampferung zu realisieren. Jeder. Dann () erh?lt das vorherige Ergebnis und kann einen Wert oder ein Versprechen zurückgeben; 2. Die Fehlerbehandlung sollte .Catch () verwenden, um Ausnahmen zu fangen, um stille Ausf?lle zu vermeiden, und den Standardwert im Fang zurückgeben, um den Prozess fortzusetzen. 3. Combinatoren wie Promise.All () (erfolgreich erfolgreich erfolgreich nach allen Erfolg), Versprechen.Race () (Die erste Fertigstellung wird zurückgegeben) und Versprechen.Allsettled () (Warten auf alle Fertigstellungen)

Cacheapi ist ein Tool, das der Browser zur Cache -Netzwerkanfragen bereitstellt, das h?ufig in Verbindung mit dem Servicearbeiter verwendet wird, um die Leistung der Website und die Offline -Erfahrung zu verbessern. 1. Es erm?glicht Entwicklern, Ressourcen wie Skripte, Stilbl?tter, Bilder usw. Zu speichern; 2. Es kann die Cache -Antworten entsprechend den Anfragen übereinstimmen. 3. Es unterstützt das L?schen bestimmter Caches oder das L?schen des gesamten Cache. 4.. Es kann Cache -Priorit?ts- oder Netzwerkpriorit?tsstrategien durch Servicearbeiter implementieren, die sich auf Fetch -Ereignisse anh?ren. 5. Es wird h?ufig für die Offline -Unterstützung verwendet, die wiederholte Zugriffsgeschwindigkeit, die Vorspannungs -Schlüsselressourcen und den Inhalt des Hintergrundaktualisierungss beschleunigen. 6. Wenn Sie es verwenden, müssen Sie auf die Cache -Versionskontrolle, Speicherbeschr?nkungen und den Unterschied zum HTTP -Caching -Mechanismus achten.

Die Ereignisschleife von JavaScript verwaltet asynchrone Vorg?nge, indem sie Call -Stapel, Webapis und Task -Warteschlangen koordinieren. 1. Der Anrufstack führt synchronen Code aus, und wenn er auf asynchrone Aufgaben begegnet, wird er zur Verarbeitung an Webapi übergeben. 2. Nachdem das Webapi die Aufgabe im Hintergrund abgeschlossen hat, wird der Rückruf in die entsprechende Warteschlange (Makroaufgabe oder Micro -Aufgabe) eingebaut. 3. Die Ereignisschleife prüft, ob der Anrufstapel leer ist. Wenn es leer ist, wird der Rückruf aus der Warteschlange herausgenommen und zur Ausführung in den Anrufstapel geschoben. V. 5. Das Verst?ndnis der Ereignisschleife hilft zu vermeiden, den Haupt -Thread zu blockieren und die Codeausführungsreihenfolge zu optimieren.

Ereignisblasen verbreiten sich vom Zielelement nach au?en zum Vorfahrknoten aus, w?hrend Ereignisfassungen sich von der ?u?eren Schicht nach innen zum Zielelement ausbreiten. 1. Ereignisblasen: Nach dem Klicken auf das untergeordnete Element l?st das Ereignis den H?rer des übergeordneten Elements nach oben aus. Nach dem Klicken auf die Schaltfl?che gibt es beispielsweise zuerst die untergeordnete und dann entzündete Eltern aus. 2. Ereigniserfassung: Stellen Sie den dritten Parameter auf True ein, so dass der H?rer in der Erfassungsstufe ausgeführt wird, z. B. das Ausl?sen des Capture -Listeners des übergeordneten Elements, bevor Sie auf die Schaltfl?che klicken. 3. Praktische Verwendungszwecke umfassen ein einheitliches Management von Ereignissen für Kinderelemente, Vorverarbeitung und Leistungsoptimierung von Abfangen. V.

In JavaScript -Arrays gibt es zus?tzlich zu MAP und Filter andere leistungsstarke und selten verwendete Methoden. 1. Reduzierung kann nicht nur summieren, sondern auch z?hlen, gruppen, flach Arrays ab und bauen neue Strukturen auf. 2. FindingIndex werden verwendet, um einzelne Elemente oder Indizes zu finden. 3. Einige und alles werden verwendet, um festzustellen, ob Bedingungen bestehen oder sich alle treffen. 4. SORT kann sortiert werden, wechselt aber das ursprüngliche Array. 5. Achten Sie darauf, das Array zu kopieren, wenn Sie es verwenden, um Nebenwirkungen zu vermeiden. Diese Methoden machen den Code pr?gnanter und effizienter.
