This article mainly shares with you a summary of the basic syntax of js regular expressions. It has a good reference value and I hope it will be helpful to everyone. Let’s follow the editor and take a look.
1. Basic regular expression syntax
Two special symbols '^' and '$'. Their function is to indicate the beginning and end of a string respectively.
Examples are as follows:
"^The": represents all strings starting with "The" ("There", "The cat", etc.);
"of despair$": indicates a string ending with "of despair";
"^abc$": indicates a string starting and ending with "abc" - haha, there is only "abc" itself. ;
"notice": Represents any string containing "notice".
Like the last example, if you don't use two special characters, you are indicating that the string you want to find is in any part of the searched string - you are not
positioning it at the top of a certain .
Other symbols include '*', '+' and '?', which represent the number of times a character or a sequence of characters appears repeatedly.
They mean "none or more", "once or more" and "none or once" respectively.
Here are a few examples:
"ab*": Indicates that a string has an a followed by zero or several b. ("a", "ab", "abbb",...);
"ab+": Indicates that a string has an a followed by at least one b or more;
" ab?": Indicates that a string has an a followed by zero or one b;
"a?b+$": Indicates that there is zero or one a followed by one or several b at the end of the string .
You can also use a range, enclosed in curly brackets, to indicate the range of repetitions.
"ab{2}": Indicates that a string has an a followed by 2 b ("abb");
"ab{2,}": Indicates that a string has an a followed by at least 2 b;
"ab{3,5}": Indicates that a string has an a followed by 3 to 5 b.
Please note that you must specify the lower limit of the range (eg: "{0,2}" instead of "{,2}").
Also, you may have noticed that '*', '+' and '?' are equivalent to "{0,}", "{1,}" and "{0,1}".
There is also a '|', which means "or" operation:
"hi|hello": indicates that there is "hi" or "hello" in a string;
"(b|cd)ef": represents "bef" or "cdef";
"(a|b)*c": represents a string of mixed "a" and "b" followed by A "c";
'.' can replace any character:
"a.[0-9]": Indicates that a string has an "a" followed by an arbitrary character and A number;
"^.{3}$": indicates a string of any three characters (length is 3 characters);
The square brackets indicate that certain characters are allowed in a Appears at a specific position in the string:
"[ab]": indicates that a string has an "a" or "b" (equivalent to "a|b");
"[a-d]": Indicates that a string contains one of lowercase 'a' to 'd' (equivalent to "a|b|c|d" or "[abcd]");
"^[a-zA-Z]": represents a string starting with a letter;
"[0-9]%": represents a number preceded by a percent sign;
",[a-zA-Z0-9]$": Indicates that a string ends with a comma followed by a letter or number.
You can also use '^' in square brackets to indicate unwanted characters. '^' should be the first one in the square brackets.
(For example: "%[^a-zA-Z]%" means that letters should not appear between two percent signs).
In order to express verbatim, you must add the transfer character '\' before the characters "^.$()|*+?{\".
Please note that within square brackets, no escape characters are required.
2. Regular expression verification controls the input character type of the text box
1. Only numbers and English can be entered:
<input onkeyup="value=value.replace(/[\W]/g,'') "
onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\d]/g,''))"
ID="Text1"
NAME="Text1">
2. Only numbers can be entered:
<input onkeyup="value=value.replace(/[^\d]/g,'') "
onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\d]/g,''))"
ID="Text2"
NAME="Text2">
3. Only full-width numbers can be entered:
<input onkeyup="value=value.replace(/[^\uFF00-\uFFFF]/g,'')"
onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\uFF00-\uFFFF]/g,''))"
ID="Text3"
NAME="Text3">
4. Only Chinese characters can be input:
<input onkeyup="value=value.replace(/[^\u4E00-\u9FA5]/g,'')"
onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\u4E00-\u9FA5]/g,''))"
ID="Text4"
NAME="Text4">
3. Popular explanation of application examples of regular expressions
**************************************** ***************************************
//Verify whether All composed of numbers
/^[0-9]{1,20}$/
^ means that the leading characters must match the rules immediately following ^
$ means that the leading characters must match the rule immediately before $
[ ] The content in [ ] is an optional character set
[0-9] means that the required character range is 0-9 between
{1,20} indicates that the legal length of the numeric string is 1 to 20, that is, the number of occurrences of the characters in [0-9] ranges from 1 to 20 times.
/^ and $/ should be used in pairs to indicate that the entire string is required to completely match the defined rule, rather than only matching a substring in the string.
********************************************** ************************************
//Verify login name : Only 5-20 character strings starting with letters and containing numbers, "_" and "." can be entered
/^[a-zA-Z]{1}([a-zA- Z0-9]|[._]){4,19}$/
^[a-zA-Z]{1} means the first character must be a letter.
([a-zA-Z0-9]|[._]){4,19} means starting from the second digit (because it immediately follows the previous expression) with a length of 4 A string of up to 9 characters, which must be composed of uppercase and lowercase letters, numbers, or the special character set [._].
********************************************** ************************************
//Verify user name : Only 1-30 strings starting with letters can be entered
/^[a-zA-Z]{1,30}$/
** *************************************************** ***************************
//Verification password: only 6-20 letters can be entered , numbers, underscore
/^(\w){6,20}$/
\w: used to match letters, numbers or underscore characters
************************************************ *************************************
//Verify ordinary phone number , Fax number: It can start with "+" or a number, and can contain "-" and " "
/^[+]{0,1}(\d){1,3}[ ] ?([-]?((\d)|[ ]){1,12})+$/
\d: used to match numbers from 0 to 9;
“?”元字符規(guī)定其前導(dǎo)對象必須在目標(biāo)對象中連續(xù)出現(xiàn)零次或一次
可以匹配的字符串如:+123 -999 999 ; +123-999 999 ;123 999 999 ;+123 999999等
*******************************************************************************
//校驗(yàn)URL
/^http[s]{0,1}:\/\/.+$/ 或 /^http[s]{0,1}:\/\/.{1,n}$/ (表示url串的長度為length(“https://”) + n )
\ / :表示字符“/”。
. 表示所有字符的集
+ 等同于{1,},就是1到正無窮吧。
*******************************************************************************
//校驗(yàn)純中文字符
/
^[\u4E00-\u9FA5]+$/
[\u4E00-\u9FA5] :估計(jì)是中文字符集的范圍吧
以上表達(dá)式均在下面的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>
規(guī)則表達(dá)式 :
<input type="input" name="regxStr" value="" > (填寫/ /之間的表達(dá)式)
<br>
校驗(yàn)字符串 :
<input type="input" name="str" value="" >
<input type="button" name="match" value="匹配" onClick="alert(regx(regxStr.value,str.value));">
</form>
</body>
</html>
4.正則表達(dá)式應(yīng)用
"^\d+$" //非負(fù)整數(shù)(正整數(shù) + 0)
"^[0-9]*[1-9][0-9]*$" //正整數(shù)
"^((-\d+)|(0+))$" //非正整數(shù)(負(fù)整數(shù) + 0)
"^-[0-9]*[1-9][0-9]*$" //Negative integer
"^-?\d+$" //Integer
"^\d+(\.\d+)?$" //Non-negative floating point number (positive floating point number + 0)
"^(([0- 9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+ )|([0-9]*[1-9][0-9]*))$" //Positive floating point number
"^((-\d+(\.\d+ )?)|(0+(\.0+)?))$" //Non-positive floating point number (negative floating point number + 0)
"^(-(([0-9 ]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+) |([0-9]*[1-9][0-9]*)))$" //Negative floating point number
"^(-?\d+)(\.\ d+)?$" //Floating point number
"^[A-Za-z]+$" //A string consisting of 26 English letters
"^[A-Z]+$" //A string consisting of 26 uppercase English letters
"^[a-z]+$" //A character string consisting of 26 lowercase English letters String
"^[A-Za-z0-9]+$" //A string consisting of numbers and 26 English letters
"^\w+ $" //A string consisting of numbers, 26 English letters or underscores
"^[\w-]+(\.[\w-]+)*@[\w- ]+(\.[\w-]+)+$" //email address
"^[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]))$/ // Year-month-day
/^((0([1-9]{1}))|(1[1|2]))/ (([0-2]([1-9]{1}))|(3[0|1]))/(d{2}|d{4})$/ // Month/Day/Year
"^([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+(\.\d+)?$ //值類型正則表達(dá)式
5.javascript正則表達(dá)式檢驗(yàn)
//校驗(yàn)是否全由數(shù)字組成
function isDigit(s)
{
var patrn=/^[0-9]{1,20}$/;
if (!patrn.exec(s)) return false
return true
}
//校驗(yàn)登錄名:只能輸入5-20個(gè)以字母開頭、可帶數(shù)字、“_”、“.”的字串
function isRegisterUserName(s)
{
var patrn=/^[a-zA-Z]{1}([a-zA-Z0-9]|[._]){4,19}$/;
if (!patrn.exec(s)) return false
return true
}
//校驗(yàn)用戶姓名:只能輸入1-30個(gè)以字母開頭的字串
function isTrueName(s)
{
var patrn=/^[a-zA-Z]{1,30}$/;
if (!patrn.exec(s)) return false
return true
}
//校驗(yàn)密碼:只能輸入6-20個(gè)字母、數(shù)字、下劃線
function isPasswd(s)
{
var patrn=/^(\w){6,20}$/;
if (!patrn.exec(s)) return false
return true
}
//校驗(yàn)普通電話、傳真號碼:可以“+”開頭,除數(shù)字外,可含有“-”
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
}
//校驗(yàn)手機(jī)號碼:必須以數(shù)字開頭,除數(shù)字外,可含有“-”
function isMobil(s)
{
var patrn=/^[+]{0,1}(\d){1,3}[ ]?([-]?((\d)|[ ]){1,12})+$/;
if (!patrn.exec(s)) return false
return true
}
//校驗(yàn)郵政編碼
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
}
//校驗(yàn)搜索關(guān)鍵字
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+$" //非負(fù)整數(shù)(正整數(shù) + 0)?
"^[0-9]*[1-9][0-9]*$" //正整數(shù)?
"^((-\\d+)|(0+))$" //非正整數(shù)(負(fù)整數(shù) + 0)?
"^-[0-9]*[1-9][0-9]*$" //負(fù)整數(shù)?
"^-?\\d+$" //Integer
"^\\d+(\\.\\d+)?$" //Non-negative floating point number (positive floating point number + 0)
"^(([0-9]+\\.[0-9]*[1-9][0-9]*)|([0-9] *[1-9][0-9]*\\.[0-9]+)|([0-9]*[1-9][0-9]*))$" //Positive floating point number
"^((-\\d+(\\.\\d+)?)|(0+(\\.0+)?))$" //Non-positive floating point number ( Negative floating point number + 0)
"^(-(([0-9]+\\.[0-9]*[1-9][0-9]*)|( [0-9]*[1-9][0-9]*\\.[0-9]+)|([0-9]*[1-9][0-9]*)))$ " //Negative floating point number
"^(-?\\d+)(\\.\\d+)?$" //Floating point number
"^ [A-Za-z]+$" //A string consisting of 26 English letters
"^[A-Z]+$" //A character consisting of 26 uppercase English letters String
"^[a-z]+$" //A string consisting of 26 lowercase English letters
"^[A-Za-z0-9 ]+$" // A string consisting of numbers and 26 English letters
"^\\w+$" // A string consisting of numbers, 26 English letters or underscores
"^[\\w-]+(\\.[\\w-]+)*@[\\w-]+(\\.[\\w-]+)+ $" //email address
"^[a-zA-z]+://(\\w+(-\\w+)*)(\\.(\\w+(-- \\w+)*))*(\\?\\S*)?$" //url
The above is the basic syntax of regular expressions shared with you. I hope it will be helpful to everyone.
The above is the detailed content of Basic syntax summary of js regular expressions. For more information, please follow other related articles on the PHP Chinese website!