日期:2014-05-16  浏览次数:20260 次

javascript中正则表达式截取字符串问题
未做处理的字符串如下:
<!--
#############################
@ FileName:test.xml
@ Date:2014-2-18 14:22:24
@ Editor:...
@ Version:...
@ Log:.......
#############################
-->

我想要获得#之间的字符串,即结果为
@ FileName:test.xml
@ Date:2014-2-18 14:22:24
@ Editor:...
@ Version:...
@ Log:.......

用正则表达式该怎么做?或者有别的方法?谢谢!
------解决方案--------------------
var a='<!--#############################@ FileName:test.xml@ Date:2014-2-18 14:22:24@ Editor:...@ Version:...@ Log:.......#############################-->'
var reg=/#+([^#]+)#+/;
var x=a.match(reg);
alert(x[1]);
这样试试
------解决方案--------------------
引用:
Quote: 引用:

var a='<!--#############################@ FileName:test.xml@ Date:2014-2-18 14:22:24@ Editor:...@ Version:...@ Log:.......#############################-->'
var reg=/#+([^#]+)#+/;
var x=a.match(reg);
alert(x[1]);
这样试试

谢谢大神!可以用,但是能否讲解一下reg=/#+([^#]+)#+/呢?本人正则菜鸟,谢谢了!

他这种方式也可以,取的是子表达式的值,match返回了一个数组,其中x[0]是完整的匹配,其他元素是匹配的子表达式,这个正则只有([^#]+)一个子表达式,那么取x[1]就可以取到子表达式的匹配了
------解决方案--------------------
引用:
Quote: 引用:

Quote: 引用:

Quote: 引用:

var a='<!--#############################@ FileName:test.xml@ Date:2014-2-18 14:22:24@ Editor:...@ Version:...@ Log:.......#############################-->'
var reg=/#+([^#]+)#+/;
var x=a.match(reg);
alert(x[1]);
这样试试

谢谢大神!可以用,但是能否讲解一下reg=/#+([^#]+)#+/呢?本人正则菜鸟,谢谢了!

他这种方式也可以,取的是子表达式的值,match返回了一个数组,其中x[0]是完整的匹配,其他元素是匹配的子表达式,这个正则只有([^#]+)一个子表达式,那么取x[1]就可以取到子表达式的匹配了

谢谢你的讲解!如果我只想得到FileName的值、Date的值等等,那该怎么做?


可以在原有的基础上先分割字符串,然后以再获取FileName、Date的值:
var str = "FileName:test.xml";
var reg = /FileName\:(\S*)/;
var substr = str.match(reg)[1];
alert(substr);