本文介绍了正则表达式的基本语法。学习正则表达式的基本语法是学习编程的基础。正则表达式在程序中被广泛使用。有需要的朋友跟我们编辑学学。
(推荐)JS正则知识点专题:https://www.jb51.net/article/139831.htm
1.正则表达式基本语法
两个特殊符号“”和“$”。它们的功能是分别指示字符串的开始和结束。
例子如下:
' the ':表示所有以' The '开头的字符串(' There ',' The cat '等)。);
Of despair$ ':表示以“Of despair”结尾的字符串;
' Abc $ ':开头结尾都是' Abc '的字符串——,呵呵,只有' abc '是自己的;
' Notice ':表示任何包含' notice '的字符串。
像上一个例子一样,如果不使用两个特殊字符,则表明要搜索的字符串在被搜索字符串3354的任何部分。
不要把它定位在某个顶部。
还有其他' * '、'和'?'这三个符号表示一个字符或一系列字符重复的次数。
它们分别表示“没有或更多”、“一次或更多”和“没有或一次”。
这里有几个例子:
Ab* ':表示一个字符串有一个A,后跟零个或几个B .(' A ',' Ab ',' abbb ',……);
“Ab”:表示字符串有一个A,后面至少有一个B或更多;
“ab,”:指示字符串有一个A,后跟零或一个B;
答?B $ ':表示在字符串末尾有零个或一个A,后跟一个或几个B。
您还可以使用用大括号括起来的范围来指示重复次数的范围。
Ab{2}“”:指示字符串有一个A后跟两个B(“ABB”);
Ab{2,} ':指示一个字符串有一个A,后跟至少两个B。
Ab{3,5} ':表示一个字符串有一个A后跟3到5个B。
请注意,您必须指定范围的下限(例如:“{0,2}”而不是“{ 2 }”)。
此外,你可能已经注意到,' * ','和'?'相当于“{0,}”、“{1,}”和“{0,1}”。
还有一个'',表示“或”运算:
“Hi hello”:指示字符串中有“Hi”或“hello”;
“EF”:它的意思是“bef”或“CDEF”;
(ab) * c ':混合“a”和“b”的字符串后跟“c”;可以替换任何字符:
A.“[0-9]”:指示字符串有一个“a”,后跟一个任意字符和一个数字;
{3} $ ':表示具有任意三个字符的字符串(长度为3个字符);
方括号表示允许某些字符出现在字符串中的特定位置:
[ab]':表示字符串有一个' a '或' b '(相当于' ab ');
[a-d]':指示字符串包含小写的“A”到“D”之一(相当于“[ABCD]”);或者'[ABCD]');
“[a-za-z]”:表示以字母开头的字符串;
[0-9]% ':表示百分号前有一位的数字;
,[a-zA-Z0-9]$ ':表示字符串以逗号后跟字母或数字结尾。
您还可以在方括号中使用''来表示不需要的字符。''应该放在方括号中的第一个位置。
(例如:“% [a-za-z]%”表示百分之二的符号中不应该有字母)。
为了一个字一个字地表达出来,你必须把它写成。$ () *?{ '这些字符前面是转移字符' \ '。
请注意,在方括号中,不需要转义字符。
2.正则表达式验证控制文本框的输入字符类型
1.只能输入数字和英文的:
input onkeyup=' value=value . replace(/[\ W]/g,' ')' onbeforepaste=' clipboard data . setdata(' text ',clipboardData.getData('text ')。replace(/[^\d]/g,''))' ID='文本1' NAME='文本1 '
2.只能输入数字的:
输入onkeyup='value=value.replace(/[^\d]/g,'')' onbeforepaste=' clipboard data . setdata(' text ',clipboardData.getData('text ')。replace(/[^\d]/g,''))' ID='文本2' NAME='文本2 '
3.只能输入全角的:
输入onkeyup='value=value.replace(/[^\uff00-\uffff]/g,'')' onbeforepaste=' clipboard data . setdata(' text ',clipboardData.getData('text ')。replace(/[^\uff00-\uffff]/g,''))' id=' text 3 ' name=' text 3 '
4.只能输入汉字的:
输入onkeyup='value=value.replace(/[^\u4e00-\u9fa5]/g,'')' onbeforepaste=' clipboard data . setdata(' text ',clipboardData.getData('text ')。replace(/[^\u4e00-\u9fa5]/g,''))' id=' text 4 ' name=' text 4 '
3.正则表达式的应用实例通俗说明
*******************************************************************************
//检查是否都是数字。
/^[0-9]{1,20}$/
指示前导字符应匹配紧随其后的规则。
$表示前导字符应该匹配紧接在$之前的规则
[]中的内容是可选字符集。
[0-9]表示所需的字符范围在0到9之间。
{1,20}表示数字串的长度在法律上是1到20,即[0-9]中的字符出现的次数范围是1到20次。
成对使用/和$/应该意味着整个字符串应该与定义的规则完全匹配,而不是只匹配字符串中的一个子字符串。
*******************************************************************************
//检查登录名:只能输入5-20个以字母开头的字符串,可以包含数字“_”和“.”
/^[a-zA-Z]{1}([a-zA-Z0-9]|[._]){4,19}$/
[a-za-z] {1}表示第一个字符必须是字母。
([a-zA-Z0-9]|[。_]){4,19}是指从第二位开始的长度为4到9位的字符串(因为它紧跟在最后一个表达式之后),要求由大小写字母、数字或特殊字符集[组成。_].
*******************************************************************************
//验证用户名:只能输入1-30个以字母开头的字符串。
/^[a-zA-Z]{1,30}$/
*******************************************************************************
//验证密码:只能输入6-20个字母、数字和下划线。
/^(\w){6,20}$/
\w:用于匹配字母、数字或下划线字符。
*******************************************************************************
//检查普通电话和传真的号码:可以以“”或数字开头,可以包含“-”和“”
/^[ ]{0,1}(\d){1,3}[ ]?([-]?(((\d)|[ ]){1,12}) $/
\d:用于匹配从0到9的数字;
"?"元字符规定它的前导对象必须在目标对象的一行中出现零次或一次。
可匹配的字符串如:123-999 999;123-999 999 ;123 999 999 ;13 999999等
*******************************************************************************
//检查URL
/http [s] {0,1}: \//。$/或/http [s] {0,1}: \//。{1,n} $/(表示url字符串的长度为length ("3359") n)
\/:表示字符“/”。表示所有字符的集合。
它等于{1,},即1的正无穷次方。
*******************************************************************************
//检查纯汉字
/
^[\u4E00-\u9FA5] $/
[\u4E00-\u9FA5]:大概是中文字符集的范围。
以上表达式都在下面的javascript中进行了测试。
超文本标记语言
脚本语言='JavaScript '
!-
函数regx(r,s)
{
if (r==null || r==''){
返回false
}
var patrn=new RegExp(r);
if (patrn.exec)
返回true
返回false
}
-
/脚本
身体
形式
规则表达式 :
input=' input ' name=' regxstr ' value=' '(填入//之间的表达式)
英国铁路公司
校验字符串 :
输入类型='输入'名称='字符串'值=' '
' type=' button ' name=' match ' value=' match ' onclick=' alert(regx(regxstr . value,str . value));'
/表单
/body
/html
4.正則表達式應用
\ d $ '//非负整数(正整数0)
[0-9]*[1-9][0-9]* $ '//正整数
((-\ d)|(0))$ '//不是正整数(负整数0)
-[0-9]*[1-9][0-9]* $ '//负整数
'^-?\d $'//整数
'^\d (\。\d)?$ '//非负浮点数(正浮点数0)
([0-9] \.[0-9] * [1-9] [0-9] *) | ([0-9] * [1-9] [0-9] * \.[0-9]) | ([0-9]
'^((-\d (\。\d)?)|(0 (\.0 )?))$ '//非正浮点数(负浮点数0)
(-([0-9] \.[0-9] * [1-9] [0-9] *) | ([0-9] * [1-9] [0-9] * \.[0-9]) | ([0]
'^(-?\d )(\。\d)?$ '//浮点数
[A-ZA-Z]$ '//由26个英文字母组成的字符串
[A-Z]$ '//由26个大写英文字母组成的字符串
[A-Z]$ '//由26个小写英文字母组成的字符串
[A-ZA-Z0-9]$ '//由数字和26个英文字母组成的字符串
\ w $ '//由数字、26个英文字母或下划线组成的字符串。
[\ w-] (\。[\ w-]) * @ [\ w-] (\。[\ w-])$ '/电子邮件地址
'^[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 |
/^((0([1-9]{1}))|(1[1|2]))/(([0-2]([1-9]{1}))|(3[0|1]))/(d{2}|d{4})$///月/日/年
'^([w-.] )@(([[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.)|((w-).)))([a-zA-Z]{2,4}|[0-9]{1,3})(]?)$ '//埃米尔
(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}$//苹果地址的正则表达式
^[- ]?\ d(\ d .\d)?$ //值类型正则表达式
5.javascript正则表达式检验
//校验是否全由数字组成
函数是数字
{
var patrn=/^[0-9]{1,20}$/;
如果(!patrn.exec)返回错误的
返回真实的
}
//校验登录名:只能输入5-20个以字母开头、可带数字、"_"、"."的字串
函数是注册用户名
{
瓦尔patrn=/^[a-za-z]{1}([a-za-z0-9]|[._]){4,19}$/;
如果(!patrn.exec)返回错误的
返回真实的
}
//校验用户姓名:只能输入1-30个以字母开头的字串
函数名称
{
var patrn=/^[a-za-z]{1,30}$/;
如果(!patrn.exec)返回错误的
返回真实的
}
//校验密码:只能输入6-20个字母、数字、下划线
函数是密码
{
var patrn=/^(\w){6,20}$/;
如果(!patrn.exec)返回错误的
返回真实的
}
//校验普通电话、传真号码:可以" "开头,除数字外,可含有"-"
函数伊斯特尔
{
//var patrn=/^[ ]{0,1}(\d){1,3}[ ]?([-]?(\d){1,12 })$/;
var patrn=/^[ ]{0,1}(\d){1,3}[ ]?([-]?((((\d)|[ ]){1,12 })$/;
如果(!patrn.exec)返回错误的
返回真实的
}
//校验手机号码:必须以数字开头,除数字外,可含有"-"
功能是移动的
{
var patrn=/^[ ]{0,1}(\d){1,3}[ ]?([-]?((((\d)|[ ]){1,12 })$/;
如果(!patrn.exec)返回错误的
返回真实的
}
//校验邮政编码
函数是邮政编码
{
//var patrn=/^[a-za-z0-9]{3,12}$/;
var patrn=/^[a-zA-Z0-9 ]{3,12 } $/;
如果(!patrn.exec)返回错误的
返回真实的
}
//校验搜索关键字
函数是搜索
{
var patrn=/^[^`~!@#$%^*()=|\\\][\]\{\}:\'\,/?]{1}[^`~!@$%^()=|\\\][\]\{\}:\'\,]{0,19}$/;
如果(!patrn.exec)返回错误的
返回真实的
}
函数isIP//通过小狗
{
瓦尔patrn=/^[0-9.]{1,20}$/;
如果(!patrn.exec)返回错误的
返回真实的
}
/*********************************************************************************
*功能:介于之间
*参数:val为任意值
* lo作为检查的下限
*嗨为检查上限
*通话:无
*返回:如果英国压力单位介于瞧和你好之间,则为没错,否则为错误.
**********************************************************************************/
函数介于(val,lo,hi) {
if((val lo)| |(val hi)){ return(false);}
else { return(true);}
}
/*********************************************************************************
*函数:isDate检查有效日期
*参数:字符串形式的字符串
*通话:isBetween,isInt
*返回:如果字符串是有效日期,则为真实的否则为错误.
**********************************************************************************/
函数isDate (theStr) {
var 1st=str。(“-”)的索引;
var 2nd=str。lastindexof('-');
if(1st==2nd){ return(false);}
否则{
var y=theStr.substring(0,1日);
var m=theStr.substring(第一个1,第二个);
var d=theStr.substring(第二个1、str。长度);
var maxDays=31
if(isInt(m)==false | | isInt(d)==false | | isInt(y)==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==0y % 400 0)maxDays=28;
else maxDays=29
}
if (isBetween(d,1,maxDays)==false){ return(false);}
else { return(true);}
}
}
/*********************************************************************************
*函数:isEuDate检查英国格式的有效日期
*参数:字符串形式的字符串
*通话:isBetween,isInt
*返回:如果字符串是有效日期,则为真实的否则为错误.
**********************************************************************************/
函数isEuDate (theStr) {
if (isBetween(theStr.length,8,10)==false){ return(false);}
否则{
var 1st=str。(“/”)的索引;
var 2nd=str。lastindexof('/');
if(1st==2nd){ return(false);}
否则{
var m=theStr.substring(第一个1,第二个);
var d=theStr.substring(0,1日);
var y=theStr.substring(第二个1、str。长度);
var maxDays=31
if(isInt(m)==false | | isInt(d)==false | | isInt(y)==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==0y % 400 0)maxDays=28;
else maxDays=29
}
if (isBetween(d,1,maxDays)==false){ return(false);}
else { return(true);}
}
}
}
/********************************************************************************
*功能:比较日期!哪个是最新的!
*参数:lessDate,moreDate为字符串
*通话:isDate,isBetween
*如果lessDatemoreDate,则返回:正确
*********************************************************************************/
函数是compdate(lessDate,moreDate)
{
如果(!isDate(lessDate)){ return(false);}
如果(!isDate(moreDate)){ return(false);}
var less 1st=lessdate。(“-”)的索引;
var减去2nd=lessdate。lastindexof('-');
var more 1st=moredate。(“-”)的索引;
var more 2nd=moredate。lastindexof('-');
var lessy=lessDate.substring(0,减去1st);
var lessm=lessdate。子串(少第1个1,少第2个);
var lessd=lessdate。substring(减去2nd 1,lessdate。长度);
var morey=moreDate.substring(0,more 1st);
var morem=moredate。子串(多1st 1,多2nd);
var mored=moredate。子串(更2nd 1,更date。长度);
var日期1=新日期(lessy,lessm,lessd);
var日期2=新日期(莫雷,莫雷姆,莫雷德);
if(date 1 date 2){ return(false);}
返回(真);
}
/*********************************************************************************
*函数isEmpty检查参数是否为空
*参数字符串为字符串
**********************************************************************************/
函数isEmpty (str) {
if ((str==null)||(str.length==0))返回真实的
其他返回(假的);
}
/*********************************************************************************
*功能:isInt
*参数:字符串形式的字符串
*如果传递的参数是整数,则返回:真的,否则返回错误的
*通话:isDigit
**********************************************************************************/
函数isInt (theStr) {
var flag=true
if(为空(字符串)){ flag=false}
其他
{ for(var I=0;itheStr.lengthi ) {
if (isDigit(theStr.substring(i,i 1))==false) {
标志=假打破;
}
}
}
返回(标志);
}
/*********************************************************************************
*功能:以色列
*参数:heStr作为字符串
德克伦为整数(句点后有多少位数)
*返回:如果字符串是浮点数,则为没错,否则为错误的
*通话:isInt
**********************************************************************************/
函数isReal (theStr,decLen) {
var dot1st=theStr.indexOf(' . ');
var dot2nd=theStr.lastIndexOf(' . ');
var OK=true
if (isEmpty(theStr))返回错误的
if (dot1st==-1) {
如果(!isInt(str))返回(false);
其他返回(真);
}
else if (dot1st!=点2nd)return(false);
else if (dot1st==0)返回(假的);
否则{
var intPart=theStr.substring(0,dot 1st);
var dec部分str。子串(点2nd 1);
if(长度偏差)返回(假的);
else if(!isInt(intPart) ||!isInt(dec部分))return(false);
else if (isEmpty(decPart))返回(假的);
其他返回(真);
}
}
/*********************************************************************************
*功能:isEmail
*参数:字符串(电子邮件地址)
*如果字符串是有效的电子邮件地址,则返回:正确
*如果传递的字符串不是有效的电子邮件地址,则为错误的
*电子邮件格式:AnyName@EmailServer例如:webmaster@hotmail.com
* @符号只能在电子邮件地址中出现一次。
*********************************************************************************/
函数isEmail (theStr) {
索引处的var=str。(“@”)的索引;
var dotIndex=theStr.indexOf(' . '在索引处);
var flag=true
theSub=theStr.substring(0,dotIndex 1)
if ((atIndex 1)||(atIndex!=字符串。lastindexof(' @ ')| |(索引2处的点索引)| |(字符串。长度=接头。长度))
{ return(false);}
else { return(true);}
}
/*********************************************************************************
*函数:新窗口
*参数:文档-在新窗口中打开的文档
新窗口的高度
新窗口的宽度
条-1-滚动条=是0-滚动条=否
调整大小-1-可调整大小=是0-可调整大小=否
*通话:无
*返回:新窗口实例
**********************************************************************************/
函数新窗口(文档、白色、宽、条形、调整大小){
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);
返回;
}
/*********************************************************************************
*函数:十进制格式
*参数:参数值-字段值
*通话:无
*返回:格式化字符串
**********************************************************************************/
函数DecimalFormat(参数值){
var int part=parse int(参数值);
var dec part=parse float(param value)-int部分;
str=
if((dec part==0)| |(dec part==null))str=(int part '。00 ');
else str=(int part dec part);
返回(str);
}
'^\\d $'//非负整数(正整数0)
'^[0-9]*[1-9][0-9]*$'//正整数
'^((-\\d )|(0 ))$'//非正整数(负整数0)
'^-[0-9]*[1-9][0-9]*$'//负整数
'^-?\\d $'//整数
'^\\d .\\d)?$'//非负浮点数(正浮点数0)
'^(([0-9] \\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\\.[0-9] )|([0-9]*[1-9][0-9]*))$'//正浮点数
'^((-\\d .\\d)?)|(0 (\\.0 )?))$'//非正浮点数(负浮点数0)
'^(-(([0-9] \\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\\.[0-9] )|([0-9]*[1-9][0-9]*)))$'//负浮点数
'^(-?\ \ d)(\ \ d).\\d)?$'//浮点数
'^[A-Za-z] $'//由26个英文字母组成的字符串
'^[A-Z] $'//由26个英文字母的大写组成的字符串
'^[a-z] $'//由26个英文字母的小写组成的字符串
'^[A-Za-z0-9] $'//由数字和26个英文字母组成的字符串
'^\\w $'//由数字、26个英文字母或者下划线组成的字符串
'^[\\w-] (\\ .[\\w-] )*@[\\w-] (\\ .[\ \ w-])$ '//电子邮件地址
'^[a-za-z]://(\ \ w(-\ \ w)*)(\ \ w).(\ \ w(-\ \ w)*)*(\ \?\\S*)?$'//url
以上就是给大家分享的正则表达式基本语法,希望对大家学习有所帮助。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。