js正则表达验证.docx

上传人:b****5 文档编号:3194627 上传时间:2022-11-20 格式:DOCX 页数:47 大小:41.95KB
下载 相关 举报
js正则表达验证.docx_第1页
第1页 / 共47页
js正则表达验证.docx_第2页
第2页 / 共47页
js正则表达验证.docx_第3页
第3页 / 共47页
js正则表达验证.docx_第4页
第4页 / 共47页
js正则表达验证.docx_第5页
第5页 / 共47页
点击查看更多>>
下载资源
资源描述

js正则表达验证.docx

《js正则表达验证.docx》由会员分享,可在线阅读,更多相关《js正则表达验证.docx(47页珍藏版)》请在冰豆网上搜索。

js正则表达验证.docx

js正则表达验证

JS正则表达式大全

(正则表达式中的特殊字符)

字符含意

\做为转意,即通常在"\"后面的字符不按原来意义解释,如/b/匹配字符"b",当b前面加了反斜杆后/\b/,转意为匹配一个单词的边界。

-或-

对正则表达式功能字符的还原,如"*"匹配它前面元字符0次或多次,/a*/将匹配a,aa,aaa,加了"\"后,/a\*/将只匹配"a*"。

^匹配一个输入或一行的开头,/^a/匹配"anA",而不匹配"Ana"

$匹配一个输入或一行的结尾,/a$/匹配"Ana",而不匹配"anA"

*匹配前面元字符0次或多次,/ba*/将匹配b,ba,baa,baaa

+匹配前面元字符1次或多次,/ba*/将匹配ba,baa,baaa

?

匹配前面元字符0次或1次,/ba*/将匹配b,ba

(x)匹配x保存x在名为$1...$9的变量中

x|y匹配x或y

{n}精确匹配n次

{n,}匹配n次以上

{n,m}匹配n-m次

[xyz]字符集(characterset),匹配这个集合中的任一一个字符(或元字符)

[^xyz]不匹配这个集合中的任何一个字符

[\b]匹配一个退格符

\b匹配一个单词的边界

\B匹配一个单词的非边界

\cX这儿,X是一个控制符,/\cM/匹配Ctrl-M

\d匹配一个字数字符,/\d/=/[0-9]/

\D匹配一个非字数字符,/\D/=/[^0-9]/

\n匹配一个换行符

\r匹配一个回车符

\s匹配一个空白字符,包括\n,\r,\f,\t,\v等

\S匹配一个非空白字符,等于/[^\n\f\r\t\v]/

\t匹配一个制表符

\v匹配一个重直制表符

\w匹配一个可以组成单词的字符(alphanumeric,这是我的意译,含数字),包括下划线,如[\w]匹配"$5.98"中的5,等于[a-zA-Z0-9]

\W匹配一个不可以组成单词的字符,如[\W]匹配"$5.98"中的$,等于[^a-zA-Z0-9]。

用re=newRegExp("pattern",["flags"])的方式比较好

pattern:

正则表达式

flags:

g(全文查找出现的所有pattern)

i(忽略大小写)

m(多行查找)vaScript动态正则表达式问题

请问正则表达式可以动态生成吗?

例如JavaScript中:

varstr="strTemp";

要生成:

varre=/strTemp/;

如果是字符连接:

varre="/"+str+"/"即可

但是要生成表达式,可以实现吗?

怎样实现?

[JAVA]javascript正则表达式

秋雨叶发表于2004-12-914:

54:

13

正则表达式是一个描述字符模式的对象。

JavaScript的RegExp对象和String对象定义了使用正则表达式来执行强大的模式匹配和文本检索与替换函数的方法.

在JavaScript中,正则表达式是由一个RegExp对象表示的.当然,可以使用一个RegExp()构造函数来创建RegExp对象,

也可以用JavaScript1.2中的新添加的一个特殊语法来创建RegExp对象.就像字符串直接量被定义为包含在引号内的字符一样,

正则表达式直接量也被定义为包含在一对斜杠(/)之间的字符.所以,JavaScript可能会包含如下的代码:

varpattern=/s$/;

这行代码创建一个新的RegExp对象,并将它赋给变量parttern.这个特殊的RegExp对象和所有以字母"s"结尾的字符串都匹配.用RegExp()也可以定义

一个等价的正则表达式,代码如下:

varpattern=newRegExp("s$");

无论是用正则表达式直接量还是用构造函数RegExp(),创建一个RegExp对象都是比较容易的.较为困难的任务是用正则表达式语法来描述字符的模式.

JavaScript采用的是Perl语言正则表达式语法的一个相当完整的子集.

正则表达式的模式规范是由一系列字符构成的.大多数字符(包括所有字母数字字符)描述的都是按照字面意思进行匹配的字符.这样说来,正则表达式/java/就和

所有包含子串"java"的字符串相匹配.虽然正则表达式中的其它字符不是按照字面意思进行匹配的,但它们都具有特殊的意义.正则表达式/s$/包含两个字符.

第一个特殊字符"s"是按照字面意思与自身相匹配.第二个字符"$"是一个特殊字符,它所匹配的是字符串的结尾.所以正则表达式/s$/匹配的就是以字母"s"结尾

的字符串.

1.直接量字符

我们已经发现了,在正则表达式中所有的字母字符和数字都是按照字面意思与自身相匹配的.JavaScript的正则表达式还通过以反斜杠(\)开头的转义序列支持某些非

字母字符.例如,序列"\n"在字符串中匹配的是一个直接量换行符.在正则表达式中,许多标点符号都有特殊的含义.下面是这些字符和它们的含义:

正则表达式的直接量字符

字符匹配

________________________________

字母数字字符自身

\f换页符

\n换行符

\r回车

\t制表符

\v垂直制表符

\/一个/直接量

\\一个\直接量

\.一个.直接量

\*一个*直接量

\+一个+直接量

\?

一个?

直接量

\|一个|直接量

\(一个(直接量

\)一个)直接量

\[一个[直接量

\]一个]直接量

\{一个{直接量

\}一个}直接量

\XXX由十进制数XXX指定的ASCII码字符

\Xnn由十六进制数nn指定的ASCII码字符

\cX控制字符^X.例如,\cI等价于\t,\cJ等价于\n

___________________________________________________

如果想在正则表达式中使用特殊的标点符号,必须在它们之前加上一个"\".

2.字符类

将单独的直接符放进中括号内就可以组合成字符类.一个字符类和它所包含的任何一个字符都匹配,所以正则表达式/[abc]/和字母"a","b","c"中的任何一个

都匹配.另外还可以定义否定字符类,这些类匹配的是除那些包含在中括号之内的字符外的所有字符.定义否定字符尖时,要将一个^符号作为从左中括号算起的第

一个字符.正则表达式的集合是/[a-zA-z0-9]/.

由于某些字符类非常常用,所以JavaScript的正则表达式语法包含一些特殊字符和转义序列来表示这些常用的类.例如,\s匹配的是空格符,制表符和其它空白符,\s

匹配的则是空白符之外的任何字符.

正则表灰式的字符类

字符匹配

____________________________________________________

[...]位于括号之内的任意字符

[^...]不在括号之中的任意字符

.除了换行符之外的任意字符,等价于[^\n]

\w任何单字字符,等价于[a-zA-Z0-9]

\W任何非单字字符,等价于[^a-zA-Z0-9]

\s任何空白符,等价于[\t\n\r\f\v]

\S任何非空白符,等价于[^\t\n\r\f\v]

\d任何数字,等价于[0-9]

\D除了数字之外的任何字符,等价于[^0-9]

[\b]一个退格直接量(特例)

________________________________________________________________

3.复制

用以上的正则表式的语法,可以把两位数描述成/\d\d/,把四位数描述成/\d\d\d\d/.但我们还没有一种方法可以用来描述具有任意多数位的数字或者是一个

字符串.这个串由三个字符以及跟随在字母之后的一位数字构成.这些复杂的模式使用的正则表达式语法指定了该表达式中每个元素要重复出现的次数.

指定复制的字符总是出现在它们所作用的模式后面.由于某种复制类型相当常用.所以有一些特殊的字符专门用于表示它们.例如:

+号匹配的就是复制前一模式一次

或多次的模式.下面的表列出了复制语法.先看一个例子:

/\d{2,4}///匹配2到4间的数字.

/\w{3}\d?

///匹配三个单字字符和一个任意的数字.

/\s+java\s+///匹配字符串"java",并且该串前后可以有一个或多个空格.

/[^"]*///匹配零个或多个非引号字符.

正则表达式的复制字符

字符含义

__________________________________________________________________

{n,m}匹配前一项至少n次,但是不能超过m次

{n,}匹配前一项n次,或者多次

{n}匹配前一项恰好n次

?

匹配前一项0次或1次,也就是说前一项是可选的.等价于{0,1}

+匹配前一项1次或多次,等价于{1,}

*匹配前一项0次或多次.等价于{0,}

___________________________________________________________________

4.选择,分组和引用

正则表达式的语法还包括指定选择项,对子表达式分组和引用前一子表达式的特殊字符.字符|用于分隔供选择的字符.例如:

/ab|cd|ef/匹配的是字符串"ab",或者是

字符串"cd",又或者"ef"./\d{3}|[a-z]{4}/匹配的是要么是一个三位数,要么是四个小写字母.在正则表达式中括号具有几种作用.它的主要作用是把单独的项目分组

成子表达式,以便可以像处理一个独立的单元那种用*、+或?

来处理那些项目.例如:

/java(script)?

/匹配的是字符串"java",其后既可以有"script",也可以没有./

(ab|cd)+|ef)/匹配的既可以是字符串"ef",也可以是字符串"ab"或者"cd"的一次或多次重复.

在正则表达式中,括号的第二个用途是在完整的模式中定义子模式。

当一个正则表达式成功地和目标字符串相匹配时,可以从目标串中抽出和括号中的子模式相匹配

的部分.例如,假定我们正在检索的模式是一个或多个字母后面跟随一位或多位数字,那么我们可以使用模式/[a-z]+\d+/.但是由于假定我们真正关心的是每个匹配

尾部的数字,那么如果我们将模式的数字部分放在括号中(/[a-z]+(\d+)/),我们就可以从所检索到的任何匹配中抽取数字了,之后我们会对此进行解析的.

代括号的子表达式的另一个用途是,允许我们在同一正则表达式的后面引用前面的子表达式.这是通过在字符串\后加一位或多位数字来实现的.数字指的是代括号的

子表达式在正则表达式中的位置.例如:

\1引用的是第一个代括号的子表达式.\3引用的是第三个代括号的

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 文学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1