您的位置:首页 > Web前端 > JavaScript

JavaScript String对象方法——search(),match(),replace(),split()

2014-05-08 18:15 501 查看
之所以把这几个String方法放一块,因为它们都与RegExp对象有关

一、search()

1、用法

a、用于检索字符串中指定的子字符串,或检索与正则表达式相匹配的子字符串。

b、search() 方法不执行全局匹配,它将忽略标志 g。它同时忽略 regexp 的 lastIndex 属性,并且总是从字符串的开始进行检索,这意味着它总是返回 stringObject 的第一个匹配的位置。

2、语法

StringObject.search(regexp)

3、参数

regexp:该参数可以是需要在 stringObject 中检索的子串,也可以是需要检索的 RegExp 对象。要执行忽略大小写的检索,请追加标志
i。

4、返回值

stringObject 中第一个与 regexp 相匹配的子串的起始位置。如果没有找到任何匹配的子串,则返回 -1。

5、实例

<html>
<head></head>
<body>
<script>
var txt="hello world!";
document.write(txt.search("world"));    //返回值:6    此时为字符串
document.write(txt.search(/world/));    //返回值:6    此时为regexp对象
document.write(txt.search(/World/));    //返回值:-1   search()方法对大小写敏感
document.write(txt.search(/World/i));   //返回值:6    i忽略大小写的检索
</script>
</body>
</html>


二、match()


1、用法

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

该方法类似 indexOf() 和 lastIndexOf(),但是它返回指定的值,而不是字符串的位置。

2、语法

StringObject.match(searchvalue)

StringObject.match(regexp)

3、参数

searchvalue:规定要检索的字符串值。

regexp:规定要匹配的模式的 RegExp 对象。如果该参数不是 RegExp 对象,则需要首先把它传递给 RegExp 构造函数,将其转换为
RegExp 对象。

4、返回值

存放匹配结果的数组。该数组的内容依赖于 regexp 是否具有全局标志 g。

5、说明

a、如果 regexp 没有标志 g,那么 match() 方法就只能在 stringObject
中执行一次匹配。如果没有找到任何匹配的文本, match() 将返回 null。否则,它将返回一个数组,其中存放了与它找到的匹配文本有关的信息。该数组的第 0 个元素存放的是匹配文本,而其余的元素存放的是与正则表达式的子表达式匹配的文本。除了这些常规的数组元素之外,返回的数组还含有两个对象属性。index 属性声明的是匹配文本的起始字符在 stringObject 中的位置,input 属性声明的是对 stringObject 的引用。

b、如果 regexp 具有标志 g,则 match() 方法将执行全局检索,找到 stringObject 中的所有匹配子字符串。若没有找到任何匹配的子串,则返回 null。如果找到了一个或多个匹配子串,则返回一个数组。不过全局匹配返回的数组的内容与前者大不相同,它的数组元素中存放的是 stringObject 中所有的匹配子串,而且也没有
index 属性或 input 属性。

c、在全局检索模式下,match() 即不提供与子表达式匹配的文本的信息,也不声明每个匹配子串的位置。如果您需要这些全局检索的信息,可以使用 RegExp.exec()。
6、实例

<html>
<head>

</head>
<body>
<script>
var txt="hello world world!";

arr=txt.match(/world/g)
document.write(arr[0] + "<br />")             //返回值:world
document.write(arr[1] + "<br />")             //返回值:world  如果 regexp 具有标志g,如果找到了一个或多个匹配子串,

//则返回一个数组。

document.write(arr.index + "<br />")          //返回值:undefined 如果 regexp 具有标志g,数组没有 index 属性或 input

//属性。

arr1=txt.match(/world/)
document.write(arr1[0] + "<br />")             //返回值:world 如果 regexp 没有标志 g,那么 match() 方法就只能在

//stringObject 中执行一次匹配。

document.write(arr1[1] + "<br />")             //返回值:undefined

document.write(arr1.index + "<br />")          //返回值:6  如果 regexp 没有标志 g,返回的数组还含有两个对象属性。
//index 属性声明的是匹配文本的起始字符在 stringObject 中的位置,
//input 属性声明的是对 stringObject 的引用。

var str="11 plus 2 equal 13"
document.write(str.match(/\d/g)+"<br />");   //返回值:1,1,2,1,3   //理解一下\d与\d+的区别
document.write(str.match(/\d+/g)+"<br/>");   //返回值:11,2,13
</script>
</body>
</html>


三、replace()


参考:/article/11782944.html

四、split()

1、用法

用于把一个字符串分割成字符串数组。

2、语法

StringObject.split(separator,howmany)

3、参数

separator:字符串或正则表达式,从该参数指定的地方分割 stringObject。

howmany:可选。该参数可指定返回的数组的最大长度。

4、返回值

a、一个字符串数组。该数组是通过在 separator 指定的边界处将字符串
stringObject 分割成子串创建的。返回的数组中的字串不包括separator 自身。

b、但是,如果 separator 是包含子表达式的正则表达式,那么返回的数组中包括与这些子表达式匹配的字串(但不包括与整个正则表达式匹配的文本)。
5、实例

<html>
<head></head>
<body>
<script type="text/javascript">
var txt="how do you do?"
document.write(txt.split(" ")+"<br/>")        //返回值:how,do,you,do?
document.write(txt.split("")+"<br/>")        //返回值:h,o,w, ,d,o, ,y,o,u, ,d,o,?
document.write(txt.split(" ",2)+"<br/>")      //返回值:how,do
document.write(txt.split(" ",1)+"<br/>")      //返回值:how
document.write(txt.split(/\s+/)+"<br/>")      //返回值:how,do,you,do?
</script>
</body>
</html>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐