var src = "{dfds34#$#}}}{}{{sdf23}{sd}{as}{sd}"
var re = /{([^{}]+)}/g;
var arr;
while ((arr = re.exec(src)) != null)
alert(arr[1]);
var re = /{([^{}]+)}/g;
var arr;
while ((arr = re.exec(src)) != null)
alert(arr[1]);
解决方案 »
- 类似淘宝本地生活按拼音选择城市代码
- javascript函数中连接两个字符串,他们中间加个换行符,怎么实现?送分啊
- 哪位大牛帮忙解决下JavaScript的问题?deleteE为什么不能把li的全部元素删除?且删到最后始终保持19个元素?
- s_liangchao1s 请进
- form.submit()提示:无效的语法
- 使用javascript的settimeout定时刷新问题,在线等
- 关于在 在线html编辑器 中插入图片不显示的问题
- 提交表单的问题?
- 怎么在网页中实现word一样的undo操作,望高手帮忙!急急。。。。。。!
- “如果图片宽度大于75则重设为75”如何实现?已知的一种方法有问题
- 请问怎样实现网页嵌套???例如。。。。。。。
- FLASH 能不能 把参数传递给网页?
reg = /\{[^(\{|\})]*\}/g
arr = str.match(reg)
alert(arr)
{dfds34#$#},dfds34#$# chenyang37(norika) :
你的结果是:
{dfds34#$#},{},{sdf23},{sd},{as},{sd}
我要的结果是:
dfds34#$#,,sdf23,sd,as,sd
这样一个数组集合。chenyang37的方法加上replace也可以,但我希望能用正则一次性把它求出。
var re = /\{([^\{\}]*)\}/g;
result=src.match(re)
alert(result.join().replace("{","").replace("}",""))
-
测试通过
因为用上面这个式子的话,不能保证左右分别是{和}
var re = /\{([^\{\}]*)\}/g;
result=src.match(re)
alert(result.join().replace(/\{/g,"").replace(/\}/g,""))
修正一下
str = "{dfds34#$#}}}{}{{sdf23}{sd}{as}{sd}";
reg = /\{([^(\{|\})]*)(\})/g
while((arr = reg.exec(str))!=null)
s+=RegExp.$1+","
alert(s)
试试这个:(?!{|})[^{}]*(?=\})或者这个
[^{}][^{}]*(?=\})针对这个能成功,但是我暂时还想不出把前面的 { 替换成 [^{}] 或者 (?!{|}) 的原因;;我只是尝试了几次,发现是可以的…… 【原本我是想把前面的 { 替换成 (?={) 的,结果发现不行tmd..】附:俺做的一个测试工具 RegExpTest.html
--------------------------
<script language="JavaScript" type="text/javascript">
function doReplace ()
{
var source = sourceEditbox.value;
var pattern = patternEditbox.value;
var replacement = replacementEditbox.value;
resultEditbox.value = source.replace (new RegExp(pattern, "g"), replacement);
showRegExp ();
}function doMatch ()
{
var source = sourceEditbox.value;
var pattern = patternEditbox.value;
resultEditbox.value = source.match (new RegExp(pattern, "g"));
showRegExp ();
}function showRegExp ()
{
var theText = "";
theText += "RegExp.input=" + RegExp.input; /* $_ */
theText += "\n";
theText += "RegExp.lastMatch=" + RegExp.lastMatch; /* $& */
theText += "\n";
theText += "RegExp.lastParen=" + RegExp.lastParen; /* $+ */
theText += "\n";
theText += "RegExp.leftContext=" + RegExp.leftContext; /* $` */
theText += "\n";
theText += "RegExp.rightContext=" + RegExp.rightContext; /* $' */
theText += "\n";
theText += "RegExp.multiline=" + RegExp.multiline; /* $* */
theText += "\n"; theText += "RegExp.$1=" + RegExp.$1;
theText += "\n";
theText += "RegExp.$2=" + RegExp.$2;
theText += "\n";
theText += "RegExp.$3=" + RegExp.$3;
theText += "\n";
theText += "RegExp.$4=" + RegExp.$4;
theText += "\n";
theText += "RegExp.$5=" + RegExp.$5;
theText += "\n";
theText += "RegExp.$6=" + RegExp.$6;
theText += "\n";
theText += "RegExp.$7=" + RegExp.$7;
theText += "\n";
theText += "RegExp.$8=" + RegExp.$8;
theText += "\n";
theText += "RegExp.$9=" + RegExp.$9;
theText += "\n"; theRegExpProperties.innerText = theText;
}
</script>
源字符串:<br>
<textarea name="sourceEditbox" cols="80" rows="5" id="sourceEditbox">this is the source string to be operate...
</textarea>
<br>
<br>
<p>Pattern:<br></p>
<input name="patternEditbox" type="text" id="patternEditbox" value="[ab]">
<input name="replace" type="button" id="replace" value="替换" onClick="doReplace();">
<input name="search" type="button" id="search" value="匹配" onClick="doMatch();">
<br>
<br>
替换者:<br>
<input name="replacementEditbox" type="text" id="replacementEditbox" value="/">
<br>
<br>
<hr size="1" noshade>
<br>
替换结果:<br>
<textarea name="resultEditbox" cols="80" rows="5" id="resultEditbox"></textarea>
<div id="theRegExpProperties"></div>
alert(str.match(/[^{}][^{}]*(?=\})/g));
var src = "{dfds34#$#}}}{}{{sdf23}{sd}{as}{sd}"
var re = /[^{}][^{}]*(?=\})/g; '(?=\})匹配}前的那部分,加上[^{}],就是前面的部份中 '不包括{}
var arr;
while ((arr = re.exec(src)) != null)
alert(arr[1]);
'arr是一个集合,不能用alert一起打出来,要用循环写出来。所以提示数量词出错。