`
阳光星心
  • 浏览: 75482 次
  • 性别: Icon_minigender_2
  • 来自: 广州
社区版块
存档分类
最新评论

js正则函数match、exec、test、search、replace、split使用介绍集合

阅读更多

 

js正则函数match、exec、test、search、replace、split使用介绍集合,学习正则表达式的朋友可以参考下

1、match 方法:使用正则表达式模式对字符串执行查找,并将包含查找的结果作为数组返回。

 

stringObj.match(rgExp) 

function auth(){

    var s = "The rain in Spain falls mainly in the plain";

    re = /(a)in/ig;          // 创建正则表达式模式。

     r = s.match(re); // 尝试去匹配搜索字符串

     document.write(r);

     

}
输出结果:ain,ain,ain,ain 

2、exec 方法 : 用正则表达式模式在字符串中查找,并返回该查找结果的第一个值(数组),如果匹配失败,返回null。

rgExp.exec(str)


返回数组包含: 


input:整个被查找的字符串的值; 


index:匹配结果所在的位置(位); 


lastInput:下一次匹配结果的位置; 


arr:结果值,arr[0]全匹配结果,arr[1,2...]为表达式内()的子匹配,由左至右为1,2...。

 例:



function Test(){ 


var src="http://sumsung753.blog.163.com/blog/I love you!"; 


var re = /\w+/g;    // 注意g将全文匹配,不加将永远只返回第一个匹配。 


var arr; 


while((arr = re.exec(src)) !=null){ //exec使arr返回匹配的第一个,while循环一次将使re在g作用寻找下一个匹配。 


document.write(arr.index + "-" + arr.lastIndex + ":" + arr + "<br/>"); 


for(key in arr){ 


document.write(key + "=>" + arr[key] + "<br/>"); 


} 


document.write("<br/>"); 


} 


} 


window.onload = RegExpTest(); 


 返回结果:


0-1:I //0为index,i所在位置,1为下一个匹配所在位置 


input=>I love you! 


index=>0 


lastIndex=>1 


0=>I 


2-6:love 


input=>I love you! 


index=>2 


lastIndex=>6 


0=>love 


7-10:you 


input=>I love you! 


index=>7 


lastIndex=>10 


0=>you

 

3、test 方法: 检查字符串是否与给出的正则表达式模式相匹配,如果是则返回 true,否则就返回 false  

 

注意:test()继承正则表达式的lastIndex属性,表达式在匹配全局标志g的时候须注意。 
例子5: 

复制代码 代码如下:

function testDemo(){ 
var r, re; // 声明变量。 
var s = "I"; 
re = /I/ig; // 创建正则表达式模式。 
document.write(re.test(s) + "<br/>"); // 返回 Boolean 结果。 
document.write(re.test(s) + "<br/>"); 
document.write(re.test(s)); 
} 
testDemo(); 


输出结果: 
true 
false 
true 
当第二次调用test()的时候,lastIndex指向下一次匹配所在位置1,所以第二次匹配不成功,lastIndex重新指向0,等于第三次又重新匹配。下例显示test的lastIndex属性: 
例子6: 

复制代码 代码如下:

function testDemo(){ 
var r, re; // 声明变量。 
var s = "I"; 
re = /I/ig; // 创建正则表达式模式。 
document.write (re.test(s) + "<br/>"); // 返回 Boolean 结果。 
document.write(re.lastIndex); // 返回 Boolean 结果。 
} 
testDemo(); 


输出: 
true 
1 
解决方法:将test()的lastIndex属性每次重新指向0,re.lastIndex = 0;

4、search 方法 :返回与正则表达式查找内容匹配的第一个子字符串的位置(偏移位)。

如果找到则返回子字符至开始处的偏移位,否则返回-1。

例子6: 

复制代码 代码如下:

function SearchDemo(){ 
var r, re; // 声明变量。 
var s = "The rain in Spain falls mainly in the plain."; 
re = /falls/i; // 创建正则表达式模式。 
re2 = /tom/i; 
r = s.search(re); // 查找字符串。 
r2 = s.search(re2); 
return("r:" + r + ";r2:" + r2); // 返回 Boolean 结果。 
} 
document.write(SearchDemo()); 
输出:r:18;r2:-1

5 、replace 方法 :返回根据正则表达式进行文字替换后的字符串的复制。

说明 
replace 方法的结果是一个完成了指定替换的 stringObj 对象的复制。意思为匹配的项进行指定替换,其它不变作为StringObj的原样返回。 
ECMAScript v3 规定,replace() 方法的参数 replacement 可以是函数而不是字符串。在这种情况下,每个匹配都调用该函数,它返回的字符串将作为替换文本使用。该函数的第一个参数是匹配模式的字符串。接下来的参数是与模式中的子表达式匹配的字符串,可以有 0 个或多个这样的参数。接下来的参数是一个整数,声明了匹配在 stringObject 中出现的位置。最后一个参数是 stringObject 本身。结果为将每一匹配的子字符串替换为函数调用的相应返回值的字符串值。函数作参可以进行更为复杂的操作。
例子7: 

复制代码 代码如下:

function f2c(s) { 
var test = /(\d+(\.\d*)?)F\b/g; // 说明华氏温度可能模式有:123F或123.4F。注意,这里用了g模式 
return(s.replace 
(test, 
function(Regstr,$1,$2,$3,newstrObj) { 
return(("<br/>" + Regstr +"<br/>" + ($1-32) * 1/2) + "C" +"<br/>" + //以下两行进行替换 
$2 +"<br/>" + $3 +"<br/>" + newstrObj +"<br/>" ); 
} 
) 
); 
} 
document.write(f2c("Water: 32.2F and Oil: 20.30F.")); 


输出结果: 
Water: //不与正则匹配的字符,按原字符输出 
32.2F //与正则相匹配的第一个字符串的原字符串 Regstr 
0.10000000000000142C //与正则相匹配的第一个字符串的第一个子模式匹配的替换结果 $1 
.2 //与正则相匹配的第一个字符串的第二个子模式匹配项的替换结果,这里我们没有将它替换 $2 
7 //与正则相匹配的第一个字符串的第一个子匹配出现的偏移量 $3 
Water: 32.2F and Oil: 20.30F. //原字符串 newstrObj 
and Oil: //不与正则匹配的字符 
20.30F //与正则相匹配的第二个字符串的原字符串 
-5.85C //与正则相匹配的第二个字符串的第一个子模式与匹配的替换结果 
.30 //与正则相匹配的第二个字符串的第二个子模式匹配项的替换结果,这里我们没有将它替换 
22 //与正则相匹配的第二个字符串的第一个子匹配出现的偏移量 
Water: 32.2F and Oil: 20.30F. //原字符串 
. //不与正则匹配的字符 
上面的函数参数我们全部用到了。在实际中,我们只须用将xxF替换为xxC,根据要求,我们无须写这么多参数。 
例子8: 

复制代码 代码如下:

function f2c(s) { 
var test = /(\d+(\.\d*)?)F\b/g; // 说明华氏温度可能模式有:123F或123.4F 
return(s.replace 
(test, 
function(strObj,$1) { 
return((($1-32) * 1/2) + "C"); 
} 
) 
); 
} 
document.write(f2c("Water: 32.2F and Oil: 20.30F.")); 


输出:Water: 0.10000000000000142C and Oil: -5.85C. 
更多的应用: 
例子9: 

复制代码 代码如下:

function f2c(s) { 
var test = /([\d]{4})-([\d]{1,2})-([\d]{1,2})/; 
return(s.replace 
(test, 
function($0,$1,$2,$3) { 
return($2 +"/" + $1); 
} 
) 
); 
} 
document.write(f2c("today: 2011-03-29")); 


输出:today: 03/2011 
6、split 方法: 将一个字符串分割为子字符串,然后将结果作为字符串数组返回。 
stringObj.split([separator[, limit]]) 
参数 
stringObj 
必选项。要被分解的 String 对象或文字。该对象不会被 split 方法修改。 
separator 
可选项。字符串或 正则表达式 对象,它标识了分隔字符串时使用的是一个还是多个字符。如果忽略该选项,返回包含整个字符串的单一元素数组。 
limit 
可选项。该值用来限制返回数组中的元素个数。 
说明 
split 方法的结果是一个字符串数组,在 stingObj 中每个出现 separator 的位置都要进行分解。separator 不作为任何数组元素的部分返回。 
例子10: 

复制代码 代码如下:

function SplitDemo(){ 
var s, ss; 
var s = "The rain in Spain falls mainly in the plain."; 
// 正则表达式,用不分大不写的s进行分隔。 
ss = s.split(/s/i); 
return(ss); 
} 
document.write(SplitDemo()); 


输出:The rain in ,pain fall, mainly in the plain. 

js正则表达式之exec()方法、match()方法以及search()方法 

先看代码:

var sToMatch = "test, Tes, tst, tset, Test, Tesyt, sTes";
var reEs = /es/gi;
alert(reEs.exec(sToMatch));
alert(sToMatch.match(reEs));
alert(sToMatch.search(reEs));

三个弹出框内容如下:

结果分析如下:

1、RegExp的exec()方法,有一个字符串参数,返回一个数组,数组的第一个条目是第一个匹配;其他的是反向引用。所以第一个返回的结果是第一个匹配的值es(不区分大小写)。

2、String对象有一个match()方法,它返回一个包含在字符串中所有匹配的数据。这个方法调用string对象,同时传给它一个RegExp对象。所以第二个弹出语句返回的是所有符合正则表达式的数组。

3、search()的字符串方法与indexOf()有些类似,但是它使用一个RegExp对象而非仅仅一个子字符串。search()方法返回第一个匹配值的位置。所以第三处弹出的是“1”,即第二个字符就匹配了。注意的是search()方法不支持全局匹配正规表达式(带参数g)。

 

分享到:
评论

相关推荐

    js中exec、test、match、search、replace、split用法.docx

    以下是关于`exec`、`test`、`match`、`search`、`replace`和`split`这六个方法的详细解释。 1. `exec()`: - `exec()`方法用于在字符串中执行一个正则表达式搜索,并返回匹配的结果。如果找到匹配项,它会返回一个...

    JavaScript常用正则函数用法示例

    JavaScript正则函数match、exec、test、search、replace、split使用。 *属性 “g”、”i” 和 “m”,分别用于指定全局匹配、区分大小写的匹配和多行匹配。 1、match()函数 match()函数:如果未找到匹配,则返回值为...

    精通 JS正则表达式

    在JavaScript中,可以通过两种方式创建正则表达式:一种是使用`RegExp`构造函数,另一种是使用正则表达式字面量。通过`RegExp`构造函数创建正则表达式时,需要提供两个参数:一个是正则表达式的文本内容,另一个是可...

    js中exec、test、match、search、replace、split用法

    以下是对`exec`、`test`、`match`、`search`、`replace`和`split`这六个方法的详细解释: 1. `exec()`: - `exec()`方法用于在字符串中执行一个正则表达式,返回一个数组,包含匹配的结果以及相关信息。如果匹配...

    JS常用正则表达式及其使用方法

    JavaScript中的正则表达式是进行字符串...通过阅读提供的文档"js valid.doc"、"常用正则表达式.doc"、"js valid.pdf"和"常用正则表达式.pdf",你将能够深入掌握更多关于JavaScript正则表达式的信息,提升你的编程技能。

    javascript正则表达式全解析文档

    ### JavaScript正则表达式全解析 #### 正则表达式的定义与使用 在JavaScript中,正则表达式是一种用于处理字符串的强大工具。它允许我们执行复杂的字符串搜索和替换操作。正则表达式对象可以通过两种方式创建:一...

    js正则表达式资料

    12. **字符串方法**:JavaScript字符串对象的`match()`, `replace()`, `search()`和`split()`方法都可以接受正则表达式作为参数,进行相应操作。 13. **JavaScript中的正则扩展**:如`String.prototype.trim()`、`...

    js 正则表达式 在线

    6. **split()**: 使用正则表达式分割字符串,返回数组。 **三、在线工具** 在进行复杂的正则表达式测试和调试时,可以利用在线工具,如给定的链接“js 正则表达式 在线”。这些工具通常提供以下功能: 1. **实时...

    javascript正则表达式学习笔记

    6. `split()`:使用正则表达式作为分隔符,将字符串分割成数组。 四、高级技巧与应用 1. 正则表达式对象的属性: - `source`:获取正则表达式的文本表示。 - `global`:检查是否有全局标志。 - `ignoreCase`:...

    javascript正则

    9. **方法应用**:JavaScript提供了多个正则相关的字符串方法,如 `test()` 检查是否匹配,`exec()` 执行匹配并返回结果数组,`match()`、`search()`、`split()` 和 `replace()` 都可以根据正则进行操作。...

    JavaScript正则表达式函数总结(常用)

    JavaScript正则表达式是JavaScript语言中用于文本匹配的特殊对象,它提供了强大的字符串处理能力。在JavaScript中,正则表达式被广泛应用于验证输入、搜索文本内容、替换文本等多种场景。这篇文章总结了JavaScript中...

    js正则表达式和验证方法

    本资料包“js正则表达式和验证方法”显然是为了帮助开发者和初学者更好地理解和运用JavaScript中的正则表达式及相关验证技巧。 1. **基础概念** - 正则表达式是由字符、元字符和量词组成的模式,用于匹配字符串。 ...

    js正则表达式(例子).rar

    JavaScript中的正则表达式(Regular Expression)是一种强大的文本处理工具,用于匹配字符串模式。在JavaScript中,正则表达式主要用于字符串的搜索、替换和分割等操作。RegExp对象是JavaScript中的正则表达式核心,...

    javascript正则匹配页面关键字

    - **replace()**:替换匹配到的部分,可以使用函数进行动态替换。 - **split()**:根据模式将字符串拆分成数组。 3. 关键字匹配实例 - **基本匹配**:创建一个包含关键字的正则表达式,如`/关键字/gi`,然后使用...

    js正则表达式笔记,直接运行

    在JavaScript中,正则表达式对象(`RegExp`)提供了多种方法来执行这些任务,包括`test()`、`exec()`、`match()`、`replace()`和`split()`等。 ### 关键知识点解析 #### 1. 正则表达式基础语法 正则表达式的基础...

Global site tag (gtag.js) - Google Analytics