Heim >Web-Frontend >js-Tutorial >Grundlegende Syntaxzusammenfassung der regulären js-Ausdrücke
Dieser Artikel gibt Ihnen hauptsächlich eine grundlegende Syntaxzusammenfassung von js regulären Ausdrücken. Er hat einen guten Referenzwert und ich hoffe, dass er für alle hilfreich sein wird. Folgen wir dem Herausgeber und werfen wir einen Blick darauf.
1. Grundlegende reguläre Ausdruckssyntax
Zwei Sonderzeichen „^“ und „$“. Ihre Funktion besteht darin, den Anfang bzw. das Ende einer Zeichenfolge anzuzeigen.
Beispiele sind wie folgt:
"^The": stellt alle Zeichenfolgen dar, die mit "The" beginnen ("There", "The cat" usw.);
„of despair$“: stellt eine Zeichenfolge dar, die mit „of despair“ endet;
“^abc$“: stellt eine Zeichenfolge dar, die mit „abc“ beginnt und endet – haha, es gibt nur „abc“ selbst ;
"notice": Stellt eine beliebige Zeichenfolge dar, die „notice“ enthält.
Wenn Sie wie im letzten Beispiel keine zwei Sonderzeichen verwenden, geben Sie an, dass die gesuchte Zeichenfolge ein Teil der gesuchten Zeichenfolge ist – Sie
positionieren sie nicht oben eines bestimmten.
Andere Symbole sind „*“, „+“ und „?“, die angeben, wie oft ein Zeichen oder eine Zeichenfolge wiederholt vorkommt.
Sie bedeuten jeweils „keine oder mehr“, „einmal oder mehr“ und „keine oder einmal“.
Hier ein paar Beispiele:
"ab*": Zeigt an, dass eine Zeichenfolge ein a gefolgt von null oder mehreren b enthält. ("a", "ab", "abbb",...);
"ab+": Zeigt an, dass auf eine Zeichenfolge mindestens ein b oder mehr folgt „ab?“: Gibt an, dass eine Zeichenfolge ein a gefolgt von null oder einem b hat;
„a?b+$“: Zeigt an, dass am Ende null oder ein a gefolgt von einem oder mehreren b steht die Zeichenfolge.
Sie können auch Bereiche in geschweiften Klammern verwenden, um den Wiederholungsbereich anzugeben.
"ab{2}": Zeigt an, dass auf eine Zeichenfolge ein a gefolgt von 2 b ("abb") folgt.
"ab{2,}": Zeigt an, dass auf eine Zeichenfolge ein a gefolgt von folgt mindestens 2 b;
"ab{3,5}": Zeigt an, dass auf eine Zeichenfolge ein a gefolgt von 3 bis 5 b folgt.
Bitte beachten Sie, dass Sie die untere Grenze des Bereichs angeben müssen (z. B.: „{0,2}“ statt „{,2}“).
Außerdem haben Sie vielleicht bemerkt, dass „*“, „+“ und „?“ äquivalent zu „{0,}“, „{1,}“ und „{0,1}“ sind.
Es gibt auch eine „¦“, die „oder“-Operation bedeutet:
„hi¦hello“: bedeutet, dass in einer Zeichenfolge „hi“ oder „hello“ steht;
"(b¦cd)ef": bedeutet "bef" oder "cdef"; "(a¦b)*c": bedeutet eine Zeichenfolge aus gemischten Zeichenfolgen aus "a" und "b". " gefolgt von einem „c“; '.' kann jedes Zeichen ersetzen: "a.[0-9]": gibt an, dass eine Zeichenfolge ein „a“ gefolgt von einem hat beliebiges Zeichen und eine Zahl; "^.{3}$": gibt eine Zeichenfolge mit drei beliebigen Zeichen an (Länge beträgt 3 Zeichen); Die eckigen Klammern geben an, dass bestimmte Zeichen zulässig sind in a Erscheint an einer bestimmten Position in der Zeichenfolge: „[ab]“: zeigt an, dass eine Zeichenfolge ein „a“ oder „b“ hat (entspricht „a¦b“); 🎜 > „[a-d]“: Zeigt an, dass eine Zeichenfolge einen der Kleinbuchstaben „a“ bis „d“ enthält (entspricht „a¦b¦c¦d“ oder „[abcd]“); ^[a-zA-Z]“: stellt eine Zeichenfolge dar, die mit einem Buchstaben beginnt; „[0-9]%“: stellt eine Zahl dar, der ein Prozentzeichen vorangestellt ist;",[a-zA-Z0-9]$": Gibt an, dass eine Zeichenfolge mit einem Komma gefolgt von einem Buchstaben oder einer Zahl endet.
Sie können auch „^“ in eckigen Klammern verwenden, um anzugeben, dass unerwünschte Zeichen „^“ das erste in den eckigen Klammern sein sollten.
(zum Beispiel: „%[^a-zA-Z]%“ bedeutet, dass Buchstaben nicht zwischen zwei Prozentzeichen stehen dürfen).
Um es wörtlich auszudrücken, müssen Sie das Escape-Zeichen '' vor den Zeichen „^.$()¦*+?{“ hinzufügen.
Bitte beachten Sie, dass innerhalb der eckigen Klammern keine Escape-Zeichen erforderlich sind.
2. Die Überprüfung regulärer Ausdrücke steuert den Eingabezeichentyp des Textfelds
1. Es können nur Zahlen und Englisch eingegeben werden :
<input onkeyup="value=value.replace(/[\W]/g,'') " onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\d]/g,''))" ID="Text1" NAME="Text1">
2 Es können nur Zahlen eingegeben werden:
<input onkeyup="value=value.replace(/[^\d]/g,'') " onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\d]/g,''))" ID="Text2" NAME="Text2">
3.
<input onkeyup="value=value.replace(/[^\uFF00-\uFFFF]/g,'')" onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\uFF00-\uFFFF]/g,''))" ID="Text3" NAME="Text3">
4. Es können nur chinesische Schriftzeichen eingegeben werden:
<input onkeyup="value=value.replace(/[^\u4E00-\u9FA5]/g,'')" onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\u4E00-\u9FA5]/g,''))" ID="Text4" NAME="Text4">
3. Regulärer Ausdruck Beliebte Erklärung von Anwendungsbeispielen der Formel
************************* *********** ***************************************** **********
//Überprüfen Sie, ob alles aus Zahlen besteht
/^[0-9]{1,20}$/
^ bedeutet, dass die führenden Zeichen übereinstimmen und der Regel nach ^
$ entsprechen müssen, dass das Startzeichen der Regel
[ ] unmittelbar vor $ entsprechen muss ] ist der optionale Zeichensatz
[0-9] Gibt an, dass der erforderliche Zeichenbereich zwischen 0-9
liegt{1,20} bedeutet, dass die zulässige Länge der numerischen Zeichenfolge 1 bis 20 beträgt, d. h. der Bereich der Häufigkeit des Vorkommens der Zeichen in [0-9] liegt zwischen 1 und 20 Mal.
/^ und $/ sollten paarweise verwendet werden, um anzugeben, dass die gesamte Zeichenfolge vollständig mit der definierten Regel übereinstimmen muss und nicht nur eine Teilzeichenfolge in der Zeichenfolge.
********************************************* ******* *****************************************
//Anmeldenamen überprüfen: Es können nur 5–20 Zeichenfolgen eingegeben werden, die mit Buchstaben beginnen und Zahlen, „_“ und „.“ enthalten.
/^[a-zA-Z]{1}([ a-zA- Z0-9]|[._]){4,19}$/
^[a-zA-Z]{1} bedeutet, dass das erste Zeichen ein Buchstabe sein muss.
([a-zA-Z0-9]|[._]){4,19} bedeutet ab der zweiten Ziffer (da sie unmittelbar auf den vorherigen Ausdruck folgt) mit einer Länge von 4. Eine Zeichenfolge von bis zu 9 Zeichen, die aus Groß- und Kleinbuchstaben, Zahlen oder dem Sonderzeichensatz [._] bestehen müssen.
********************************************* ******* ************************************
/ /Benutzernamen überprüfen: Es können nur 1–30 Zeichenfolgen eingegeben werden, die mit Buchstaben beginnen
/^[a-zA-Z]{1,30}$/
** ********************************************** *** ***************************
//Bestätigungspasswort: nur 6-20 Buchstaben möglich eingegeben werden, Zahlen, Unterstriche
/^(w){6,20}$/
w: wird verwendet, um Buchstaben, Zahlen oder Unterstriche zuzuordnen
************************************************ **** *******************************
//Verifizieren Sie, dass es normal ist Telefonnummer und Faxnummer: Sie kann mit „+“ oder einer Zahl beginnen und „-“ und „ „
/^[+]{0,1}(d){1 enthalten ,3}[ ]?([ -]?((d)|[ ]){1,12})+$/
d: wird verwendet, um Zahlen von 0 bis 9 abzugleichen;
“?”元字符规定其前导对象必须在目标对象中连续出现零次或一次
可以匹配的字符串如:+123 -999 999 ; +123-999 999 ;123 999 999 ;+123 999999等
*******************************************************************************
//校验URL
/^http[s]{0,1}:\/\/.+$/ 或 /^http[s]{0,1}:\/\/.{1,n}$/ (表示url串的长度为length(“https://”) + n )
\ / :表示字符“/”。
. 表示所有字符的集
+ 等同于{1,},就是1到正无穷吧。
*******************************************************************************
//校验纯中文字符
/
^[\u4E00-\u9FA5]+$/
[\u4E00-\u9FA5] :估计是中文字符集的范围吧
以上表达式均在下面的javascript中测试通过
<html> <script language="JavaScript"> <!-- function regx(r,s) { if (r == null || r == ""){ return false; } var patrn= new RegExp(r); if (patrn.exec(s)) return true return false } --> </script> <body> <form>
规则表达式 :
<input type="input" name="regxStr" value="" > (填写/ /之间的表达式) <br>
校验字符串 :
<input type="input" name="str" value="" > <input type="button" name="match" value="匹配" onClick="alert(regx(regxStr.value,str.value));"> </form> </body> </html>
4.正則表達式應用
"^\d+$" //非负整数(正整数 + 0)
"^[0-9]*[1-9][0-9]*$" //正整数
"^((-\d+)|(0+))$" //非正整数(负整数 + 0)
"^-[0-9]*[1-9][0-9]*$" //Negative Ganzzahl
"^-?d+$" //Ganzzahl
"^d+(.d+)?$" //Nicht negative Gleitkommazahl (positive Gleitkommazahl + 0)
"^(([0-9 ]+. [0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*.[0-9]+)|( [0- 9]*[1-9][0-9]*))$" //Positive Gleitkommazahl
"^((-d+(.d+)?)|( 0+(. 0+)?))$" //Nicht positive Gleitkommazahl (negative Gleitkommazahl + 0)
"^(-(([0-9]+. [0-9]*[ 1-9][0-9]*)|([0-9]*[1-9][0-9]*.[0-9]+)|([0- 9]*[1-9 ][0-9]*)))$" //Negative Gleitkommazahl
"^(-?d+)(.d+)?$" // Gleitkommazahl
"^[A-Za-z]+$" //Eine Zeichenfolge bestehend aus 26 englischen Buchstaben
"^[A-Z]+$" //Eine Zeichenfolge bestehend aus 26 englischen Buchstaben. Eine Zeichenfolge bestehend aus Großbuchstaben
"^[a-z]+$" // Eine Zeichenfolge bestehend aus 26 englischen Kleinbuchstaben
"^[A- Za-z0-9]+$" // Eine Zeichenfolge bestehend aus Zahlen und 26 englischen Buchstaben
"^w+$" // Eine Zeichenfolge bestehend aus Zahlen, 26 Englische Buchstaben oder Unterstriche String
"^[w-]+(.[w-]+)*@[w-]+(.[w-]+)+$" //email Adresse
"^[a-zA-z]+://(w+(-w+)*)(.(w+(-w+)*))*(?S*)?$ " //url
/^(d{2}|d{4})-((0([1-9]{1}))|(1[1|2]) )-(( [0-2]([1-9]{1}))|(3[0|1]))$/ // Jahr-Monat-Tag
/^ ((0( [1-9]{1}))|(1[1|2]))/(([0-2]([1-9]{1}))|(3[0|1 ]))/ (d{2}|d{4})$/ // Monat/Tag/Jahr
"^([w-.]+)@(([[0- 9]{1 ,3}.[0-9]{1,3}.[0-9]{1,3}.)|(([w-]+.)+))([a-zA- Z]{2 ,4}|[0-9]{1,3})(]?)$" //Emil
"(d+-)?(d{4}-?d{7}|d{3}-?d{8}|^d{7,8})(-d+)?" //电话号码
"^(d{1,2}|1dd|2[0-4]d|25[0-5]).(d{1,2}|1dd|2[0-4]d|25[0-5]).(d{1,2}|1dd|2[0-4]d|25[0-5]).(d{1,2}|1dd|2[0-4]d|25[0-5])$" //IP地址
^([0-9A-F]{2})(-[0-9A-F]{2}){5}$ //MAC地址的正则表达式
^[-+]?\d+(\.\d+)?$ //值类型正则表达式
5.javascript正则表达式检验
//校验是否全由数字组成
function isDigit(s) { var patrn=/^[0-9]{1,20}$/; if (!patrn.exec(s)) return false return true }
//校验登录名:只能输入5-20个以字母开头、可带数字、“_”、“.”的字串
function isRegisterUserName(s) { var patrn=/^[a-zA-Z]{1}([a-zA-Z0-9]|[._]){4,19}$/; if (!patrn.exec(s)) return false return true }
//校验用户姓名:只能输入1-30个以字母开头的字串
function isTrueName(s) { var patrn=/^[a-zA-Z]{1,30}$/; if (!patrn.exec(s)) return false return true }
//校验密码:只能输入6-20个字母、数字、下划线
function isPasswd(s) { var patrn=/^(\w){6,20}$/; if (!patrn.exec(s)) return false return true }
//校验普通电话、传真号码:可以“+”开头,除数字外,可含有“-”
function isTel(s) { //var patrn=/^[+]{0,1}(\d){1,3}[ ]?([-]?(\d){1,12})+$/; var patrn=/^[+]{0,1}(\d){1,3}[ ]?([-]?((\d)|[ ]){1,12})+$/; if (!patrn.exec(s)) return false return true }
//校验手机号码:必须以数字开头,除数字外,可含有“-”
function isMobil(s) { var patrn=/^[+]{0,1}(\d){1,3}[ ]?([-]?((\d)|[ ]){1,12})+$/; if (!patrn.exec(s)) return false return true }
//校验邮政编码
function isPostalCode(s) { //var patrn=/^[a-zA-Z0-9]{3,12}$/; var patrn=/^[a-zA-Z0-9 ]{3,12}$/; if (!patrn.exec(s)) return false return true }
//校验搜索关键字
function isSearch(s) { var patrn=/^[^`~!@#$%^&*()+=|\\\][\]\{\}:;\'\,.<>/?]{1}[^`~!@$%^&()+=|\\\][\]\{\}:;\'\,.<>?]{0,19}$/; if (!patrn.exec(s)) return false return true } function isIP(s) //by zergling { var patrn=/^[0-9.]{1,20}$/; if (!patrn.exec(s)) return false return true } /********************************************************************************* * FUNCTION: isBetween * PARAMETERS: val AS any value * lo AS Lower limit to check * hi AS Higher limit to check * CALLS: NOTHING * RETURNS: TRUE if val is between lo and hi both inclusive, otherwise false. **********************************************************************************/ function isBetween (val, lo, hi) { if ((val < lo) || (val > hi)) { return(false); } else { return(true); } } /********************************************************************************* * FUNCTION: isDate checks a valid date * PARAMETERS: theStr AS String * CALLS: isBetween, isInt * RETURNS: TRUE if theStr is a valid date otherwise false. **********************************************************************************/ function isDate (theStr) { var the1st = theStr.indexOf('-'); var the2nd = theStr.lastIndexOf('-'); if (the1st == the2nd) { return(false); } else { var y = theStr.substring(0,the1st); var m = theStr.substring(the1st+1,the2nd); var d = theStr.substring(the2nd+1,theStr.length); var maxDays = 31; if (isInt(m)==false || isInt(d)==false || isInt(y)==false) { return(false); } else if (y.length < 4) { return(false); } else if (!isBetween (m, 1, 12)) { return(false); } else if (m==4 || m==6 || m==9 || m==11) maxDays = 30; else if (m==2) { if (y % 4 > 0) maxDays = 28; else if (y % 100 == 0 && y % 400 > 0) maxDays = 28; else maxDays = 29; } if (isBetween(d, 1, maxDays) == false) { return(false); } else { return(true); } } } /********************************************************************************* * FUNCTION: isEuDate checks a valid date in British format * PARAMETERS: theStr AS String * CALLS: isBetween, isInt * RETURNS: TRUE if theStr is a valid date otherwise false. **********************************************************************************/ function isEuDate (theStr) { if (isBetween(theStr.length, 8, 10) == false) { return(false); } else { var the1st = theStr.indexOf('/'); var the2nd = theStr.lastIndexOf('/'); if (the1st == the2nd) { return(false); } else { var m = theStr.substring(the1st+1,the2nd); var d = theStr.substring(0,the1st); var y = theStr.substring(the2nd+1,theStr.length); var maxDays = 31; if (isInt(m)==false || isInt(d)==false || isInt(y)==false) { return(false); } else if (y.length < 4) { return(false); } else if (isBetween (m, 1, 12) == false) { return(false); } else if (m==4 || m==6 || m==9 || m==11) maxDays = 30; else if (m==2) { if (y % 4 > 0) maxDays = 28; else if (y % 100 == 0 && y % 400 > 0) maxDays = 28; else maxDays = 29; } if (isBetween(d, 1, maxDays) == false) { return(false); } else { return(true); } } } } /******************************************************************************** * FUNCTION: Compare Date! Which is the latest! * PARAMETERS: lessDate,moreDate AS String * CALLS: isDate,isBetween * RETURNS: TRUE if lessDate<moreDate *********************************************************************************/ function isComdate (lessDate , moreDate) { if (!isDate(lessDate)) { return(false);} if (!isDate(moreDate)) { return(false);} var less1st = lessDate.indexOf('-'); var less2nd = lessDate.lastIndexOf('-'); var more1st = moreDate.indexOf('-'); var more2nd = moreDate.lastIndexOf('-'); var lessy = lessDate.substring(0,less1st); var lessm = lessDate.substring(less1st+1,less2nd); var lessd = lessDate.substring(less2nd+1,lessDate.length); var morey = moreDate.substring(0,more1st); var morem = moreDate.substring(more1st+1,more2nd); var mored = moreDate.substring(more2nd+1,moreDate.length); var Date1 = new Date(lessy,lessm,lessd); var Date2 = new Date(morey,morem,mored); if (Date1>Date2) { return(false);} return(true); } /********************************************************************************* * FUNCTION isEmpty checks if the parameter is empty or null * PARAMETER str AS String **********************************************************************************/ function isEmpty (str) { if ((str==null)||(str.length==0)) return true; else return(false); } /********************************************************************************* * FUNCTION: isInt * PARAMETER: theStr AS String * RETURNS: TRUE if the passed parameter is an integer, otherwise FALSE * CALLS: isDigit **********************************************************************************/ function isInt (theStr) { var flag = true; if (isEmpty(theStr)) { flag=false; } else { for (var i=0; i<theStr.length; i++) { if (isDigit(theStr.substring(i,i+1)) == false) { flag = false; break; } } } return(flag); } /********************************************************************************* * FUNCTION: isReal * PARAMETER: heStr AS String decLen AS Integer (how many digits after period) * RETURNS: TRUE if theStr is a float, otherwise FALSE * CALLS: isInt **********************************************************************************/ function isReal (theStr, decLen) { var dot1st = theStr.indexOf('.'); var dot2nd = theStr.lastIndexOf('.'); var OK = true; if (isEmpty(theStr)) return false; if (dot1st == -1) { if (!isInt(theStr)) return(false); else return(true); } else if (dot1st != dot2nd) return (false); else if (dot1st==0) return (false); else { var intPart = theStr.substring(0, dot1st); var decPart = theStr.substring(dot2nd+1); if (decPart.length > decLen) return(false); else if (!isInt(intPart) || !isInt(decPart)) return (false); else if (isEmpty(decPart)) return (false); else return(true); } } /********************************************************************************* * FUNCTION: isEmail * PARAMETER: String (Email Address) * RETURNS: TRUE if the String is a valid Email address * FALSE if the passed string is not a valid Email Address * EMAIL FORMAT: AnyName@EmailServer e.g; webmaster@hotmail.com * @ sign can appear only once in the email address. *********************************************************************************/ function isEmail (theStr) { var atIndex = theStr.indexOf('@'); var dotIndex = theStr.indexOf('.', atIndex); var flag = true; theSub = theStr.substring(0, dotIndex+1) if ((atIndex < 1)||(atIndex != theStr.lastIndexOf('@'))||(dotIndex < atIndex + 2)||(theStr.length <= theSub.length)) { return(false); } else { return(true); } } /********************************************************************************* * FUNCTION: newWindow * PARAMETERS: doc -> Document to open in the new window hite -> Height of the new window wide -> Width of the new window bars -> 1-Scroll bars = YES 0-Scroll Bars = NO resize -> 1-Resizable = YES 0-Resizable = NO * CALLS: NONE * RETURNS: New window instance **********************************************************************************/ function newWindow (doc, hite, wide, bars, resize) { var winNew="_blank"; var opt="toolbar=0,location=0,directories=0,status=0,menubar=0,"; opt+=("scrollbars="+bars+","); opt+=("resizable="+resize+","); opt+=("width="+wide+","); opt+=("height="+hite); winHandle=window.open(doc,winNew,opt); return; } /********************************************************************************* * FUNCTION: DecimalFormat * PARAMETERS: paramValue -> Field value * CALLS: NONE * RETURNS: Formated string **********************************************************************************/ function DecimalFormat (paramValue) { var intPart = parseInt(paramValue); var decPart =parseFloat(paramValue) - intPart; str = ""; if ((decPart == 0) || (decPart == null)) str += (intPart + ".00"); else str += (intPart + decPart); return (str); }
"^\\d+$" //非负整数(正整数 + 0)
"^[0-9]*[1-9][0-9]*$" //正整数
"^((-\\d+)|(0+))$" //非正整数(负整数 + 0)
"^-[0-9]*[1-9][0-9]*$" //负整数
"^-?\d+$" //Integer
"^\d+(\.\d+)?$" //Nicht negative Gleitkommazahl (positive Gleitkommazahl + 0)
"^(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[ 1-9 ][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$" //Positive Gleitkommazahl
"^((-\d+(\.\d+)?)|(0+(\.0+)?))$" //Nicht positive Gleitkommazahl (negative Gleitkommazahl + 0)
"^(-(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9 ]*[1-9] [0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*)))$" //Negatives Floating Punktzahl
"^(-?\d+)(\.\d+)?$" // Gleitkommazahl
"^[A-Za-z ]+$" // Bestehend aus 26 Eine Zeichenfolge bestehend aus englischen Buchstaben
"^[A-Z]+$" // Eine Zeichenfolge bestehend aus 26 englischen Großbuchstaben
"^[a-z] +$" //Eine Zeichenfolge bestehend aus 26 englischen Kleinbuchstaben
"^[A-Za-z0-9]+$" //Eine Zeichenfolge bestehend aus Zahlen und 26 englische Buchstaben String
"^\w+$" //Eine Zeichenfolge bestehend aus Zahlen, 26 englischen Buchstaben oder Unterstrichen
"^[\w-]+( \.[\w-]+)*@[\w-]+(\.[\w-]+)+$" //E-Mail-Adresse
"^[a-zA- z]+://(\w+(-\w+)*)(\.(\w+(-\w+)*))*(\?\S*)?$" //url
Das Obige ist die grundlegende Syntax regulärer Ausdrücke, die ich Ihnen zum Lernen mitteile.
Das obige ist der detaillierte Inhalt vonGrundlegende Syntaxzusammenfassung der regulären js-Ausdrücke. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!