java 正则 script_Java Script基础(十二) 正则表达式

一、正则表达式中常用的符号

虽然可以使用string函数来完成验证,但是这种验证方式不够严谨,而且编写比较麻烦。而正则表达式是一种描述字符模式的对象,由一些特殊的符号组成,其组成的字母模式用来匹配各种表达式。下表中列举出常用的符号和用法。

正则表达式中常用的符号和用法

符号

描述

/....../

代表一个模式的开始和结束。

^

匹配字符串的开始

$

匹配字符串的结束

\s

任何空白字符

\S

任何非空白字符

\d

匹配一个数字字符,等价于[0-9]。

\D

匹配数字之外的任何数字,等价于[^0-9]。

\w

匹配一个数字,下划线或者字母字符,等价于[A-Za-z0-9_]。

\W

匹配非单字字符,等价于[^A-Za-z0-9_]

.

除了换行符之外的任意字符。

上表中的字符表示可以匹配哪些字符,字符可以出现的次数同样需要用特殊符号表示。如下标所示。

正则表达式的重复字符

符号

描述

{n}

匹配前一项n次。

{n,}

匹配前一项n次以上。

{n,m}

匹配前一项n次,但不能超过m次。

*

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

+

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

?

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

通过上面两张表,可以了解正则表达式的一些符号的作用,其中"$","+","?","*","^",".","\"等符号都被赋予了特殊的含义,如果在正则表达式中需要匹配这些字符本身,需要使用转移字符反斜杠"\"来进行匹配,比如"\."表示匹配一个".",\$表示匹配一个"$"符号。

二、正则表达式的RegExp对象。

RegExp(Regular Expression,正则表达式)对象时对象时对字符串执行模式匹配的强大工具。定义正则表达式有两种方式,一种是普通方式,另一种是构造函数方式。

1、普通方式:

var reg = /表达式/附加函数

在语法中:

表达式:一个字符串,指定了正则表达式的模式。

附加参数:用来扩展表达式的含义,主要有一下3个参数:

g:代表可以进行全局匹配。

i:代表不区分大小写匹配。

m:代表可以进行多行匹配。

上面3个参数可以任意组合,代表复合含义,当然也可以不加参数。

例:

var reg = /blue/;var reg = /blue/gi;var reg = /^\d{2,8}$/m;var reg = /^\w+@\w+(\.[A-Za-z]{2,3}){1,2}$/; //电子邮件

2、构造函数方式

var reg = new RegExp(表达式,附加参数);

其中表达式和附加参数的含义和上面完全相同,

例如:

var reg = new RegExp("blue");var reg = new RegExp("blue","g");

如果表达式是正则表达式而不是字符串时,"可以省略。

var reg = new RegExp(/^\w+@\w+(\.[A-Za-z]{2,3}){1,2}$/);

注意:

普通方式中的表达式必须是一个常量字符串,而构造函数中的表达式可以是常量字符串,也可以使一个JavaScript变量。例如:根据用户输入的值作为正则表达式的参数:

var reg = new RegExp(document.getElementById("id").value,"g");

3、test()

test(string)方法用于验证字符串是否符合要求,如果符合返回true,不符合则返回false。

var email = "zhangsan@qq.com";var reg = new RegExp(/^\w+@\w+(\.[A-Za-z]{2,3}){1,2}$/);

reg.test(email);

结果:true

三、String对象和正则表达式

JavaScript除了支持RegExp对象的正则表达式方法外,还支持String对象的正则表达式方法,String对象定义了使用正则表达式来执行强大的模式匹配和文本检索与替换函数的方法,String常用的方法如下所示:

1、match():

match()方法可以再字符串内检索指定的值,找到一个或多个正则表达式的匹配。

语法:

字符串对象.match(searchString或regexpObject);

searchString是要检索的字符串的值

regexpObject是规定要匹配模式的regexp对象。

例如:

var str = "my cat";var reg = /cat/;var result=str.match(reg);

result的值为:cat。

2、search():

search()方法用于检索字符串中指定的子字符串,或检索与正则表达式相匹配的子字符串。该方法不执行全局匹配,返回子字符串的第一个匹配的位置,如果没找到任何匹配的子串,则返回-1,与String的indexOf()方法类似。

语法:

字符串对象.search(searchString或regexpObject);

searchString是要检索的字符串的值

regexpObject是规定要匹配模式的regexp对象。

例如:

var str = "hello rock!rock!";var result = str.search(/rock/);

result的值为:6;

3、replace():

repleace()方法用于在字符串中用一些字符替换另一些字符,或替换一个与正则表达式匹配的子串。

语法:

字符串对象.replace(RegExp对象获字符串,"替换的字符串")

如果设置了全文检索,则符合条件的RegExp或字符串都将被替换,否则只替换第一个,返回替换后的字符串,例如:

var str = "My little white cat,is really a very lively cat";var result = str.replace(/cat/,"dog");var results = str.reaplace(/cat/g,"dog");

result的值: My little white dog,is really a very lively cat

results的值:My little white dog,is really a very lively dog

4、split():

split()方法将字符串分割成一系列子串并通过一个数组将这一系列子串返回。

语法:

字符串对象.split(分隔符,n);

分隔符可以使字符串,也可以使正则表达式。n为限制输出数组的个数,为可选项,如果不设置n,则返回包含整个字符串的元素数组,例如:

var str = "red,blue,green,white";var result = str.split(",");var string = "";for(var i = 0;i

string+=result[i] + "_";

}

document.write(string);

结果为:

red_blue_green_white_;

正则表达式验证 java script 验证大全 部分: 下面都是我收集的一些比较常用的正则表达式,因为平常可能在表单验证的时候,用到的比较多。特发出来,让各位朋友共同使用。呵呵。 匹配中文字符的正则表达式: [u4e00-u9fa5] 评注:匹配中文还真是个头疼的事,有了这个表达式就好办了 匹配双字节字符(包括汉字在内):[^x00-xff] 评注:可以用来计算字符串的长度(一个双字节字符长度计2,ASCII字符计1) 匹配空白行的正则表达式:ns*r 评注:可以用来删除空白行 匹配HTML标记的正则表达式:]*>.*?| 评注:网上流传的版本太糟糕,上面这个也仅仅能匹配部分,对于复杂的嵌套标记依旧无能为力 匹配首尾空白字符的正则表达式:^s*|s*$ 评注:可以用来删除行首行尾的空白字符(包括空格、制表符、换页符等等),非常有用的表达式 匹配Email地址的正则表达式:w+([-+.]w+)*@w+([-.]w+)*.w+([-.]w+)* 评注:表单验证时很实用 匹配网址URL的正则表达式:[a-zA-z]+://[^s]* 评注:网上流传的版本功能很有限,上面这个基本可以满足需求 匹配帐号是否合法(字母开头,允许5-16字节,允许字母数字下划线):^[a-zA-Z][a-zA-Z0-9_]{4,15}$ 评注:表单验证时很实用 匹配国内电话号码:d{3}-d{8}|d{4}-d{7} 评注:匹配形式如 0511-4405222 或 021-87888822 匹配腾讯QQ号:[1-9][0-9]{4,} 评注:腾讯QQ号从10000开始 等等..............................
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值