JS如何用正则表达式获取字符串内的匹配部份?

JavaScript025

JS如何用正则表达式获取字符串内的匹配部份?,第1张

实现的效果:在字符串中abcdefgname='test'sddfhskshjsfsjdfps中获取name的值test 

实现的机制:通过replace的回调函数获取。

可以通过下面的代码获取匹配部分

var str = "abcdefgname='test'sddfhskshjsfsjdfps"

var reg = /name='((\w|-|\s)+)/ig

str.replace(reg, function() { 

console.log(arguments.length)//5 

console.log(arguments[1])//test 

})

字符串 stringObject 的 replace() 方法执行的是查找并替换的操作。它将在 stringObject 中查找与 regexp 相匹配的子字符串,然后用 replacement 来替换这些子串。如果 regexp 具有全局标志 g,那么 replace() 方法将替换所有匹配的子串。否则,它只替换第一个匹配子串。

亲爱的读者朋友,如果你点开了这篇文章,说明你对正则很感兴趣。

想必你也了解的重要性,在我看来正则表达式是衡量程序员水平的一个标准。

关于正则表达式的教程,网上也有很多,相信你也看了一些。

与之不同的是,本文的目的是希望所有认真读完的童鞋们,都有实质性的提高。

本文共有七章,用JavaScript语言完整地讨论了的方方面面。

如果觉得文章某块儿没有说明白清楚,欢迎留言,能力范围之内,老姚必做详细解答。

构造的方法和创建数学表达式的方法一样。也就是用多种元字符与运算符可以将小的表达式结合在一起来创建更大的表达式。正则表达式的组件可以是单个的字符、字符集合、字符范围、字符间的选择或者所有这些组件的任意组合。

正则表达式是由普通字符(例如字符 a 到 z)以及特殊字符(称为"元字符")组成的文字模式。模式描述在搜索文本时要匹配的一个或多个字符串。正则表达式作为一个模板,将某个字符模式与所搜索的字符串进行匹配。

Javascript正则表达式 /\((.+?)\)(.+?)\(\/\1\)/ig

完整的匹配两个字符串之间的字符串的Javascript程序如下

<script type=text/javascript>

 var str='(pl)\n(lc)1 (/lc)\n(nr)为什么 (/nr)\n (zz)组长 (/zz) \n (rq)2017-06-24 15:03:56.0 (/rq)\n(/pl)\n(pl)\n (lc)2 (/lc)\n (nr)我要吃秋葵(/nr)\n(zz)游客

(/zz)\n (rq)2017-06-26 01:11:22.0 (/rq)\n (/pl)'

 var regex=/\((.+?)\)(.+?)\(\/\1\)/ig

 var result

 while((result=regex.exec(str))!=null){

  alert(result[2])

 }

</script>

运行结果

为什么

组长 

2017-06-24 15:03:56.0   

我要吃秋葵 

游客 

2017-06-26 01:11:22.0