js正则表达式详解,js中正则表达式的用法

js正则表达式详解,js中正则表达式的用法,js正则表达式基本语法(精粹)

本文介绍了正则表达式的基本语法。学习正则表达式的基本语法是学习编程的基础。正则表达式在程序中被广泛使用。有需要的朋友跟我们编辑学学。

(推荐)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的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

相关文章阅读

  • js正则表达式验证整数和小数,js判断整数正则表达式
  • js正则表达式验证整数和小数,js判断整数正则表达式,JS正则表达式验证数字(非常全)
  • js正则表达式验证中文,js 正则验证
  • js正则表达式验证中文,js 正则验证,JS正则表达式的验证
  • js正则表达式详解,js中正则表达式的用法,js正则表达式基本语法(精粹)
  • js正则表达式使用,js正则表达式写法
  • js正则表达式使用,js正则表达式写法,JS正则表达式基本用法(经典全)
  • js正则表达式replace,replace 正则
  • js正则表达式replace,replace 正则,详解JS正则replace的使用方法
  • js检验正则表达式,js里面怎么使用正则进行验证,js正则表达式简单校验方法
  • js正则表达式match,正则表达式match的返回值
  • js正则表达式匹配日期,js 日期比较
  • 正则匹配html标签中的内容,js正则表达式匹配字符串中是否有
  • 留言与评论(共有 条评论)
       
    验证码: