请教一个 截取字符串的问题 思路想用正则表达式 abs之后第一个(,>之前第一个) 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 你这得多说几种样式,才能找到一个通用的规则,你只给这一种,那给出来的正则就会很有局限性了,你换个方式写法,再用就会出现问题的。比如这个abs,是只要abs后面的括号去掉吗?说的要明白一点才行哦。 就是 abs(......) 这样的 只要带 abs()的 ,abs那一对括号就要去掉。至于....内的内容 保持不变。。不知道这么说 清楚不。。- - var s="abs((a1+a4)-a5)>d8+d9"; alert(s.replace(/(abs)\(([^\(]*\([^\)]*\)[^\)]*)\)/g,"$1 $2")); 感谢 不过试了一下 var s="abs((d7+d9))>d8+d9"; alert(s.replace(/(abs)\(([^\(]*\([^\)]*\)[^\)]*)\)/g,"$1 $2"));并没有做到 abs(d7+d9) >d8+d9只是想去掉abs的括号 - - 用这个:var s="abs((a1+a4)-a5)>d8+d9";alert(s.replace(/\babs\((.*)\)/g,"abs $1 ")); //abs (a1+a4)-a5 >d8+d9 感谢 不过试了一下 var s="abs((d7+d9))>d8+d9"; alert(s.replace(/(abs)\(([^\(]*\([^\)]*\)[^\)]*)\)/g,"$1 $2"));并没有做到 abs(d7+d9) >d8+d9只是想去掉abs的括号 - -6楼正解 你的字符串有全角括号 var s="abs((a1+a4)-a5)>d8+d9";var reg = /(abs)(\()((?:[^\(\)]*(?:\([^\)\(]*\))[^\(\)]*)*)(\))/g;s = s.replace(reg,"$1$3"); 感谢 不过试了一下 var s="abs((d7+d9))>d8+d9"; alert(s.replace(/(abs)\(([^\(]*\([^\)]*\)[^\)]*)\)/g,"$1 $2"));并没有做到 abs(d7+d9) >d8+d9只是想去掉abs的括号 - -6楼正解 你的字符串有全角括号还以为你说我呢往回看了一下,楼主的代码有全角笔误吧,代码中可能全角? 感谢 不过试了一下 var s="abs((d7+d9))>d8+d9"; alert(s.replace(/(abs)\(([^\(]*\([^\)]*\)[^\)]*)\)/g,"$1 $2"));并没有做到 abs(d7+d9) >d8+d9只是想去掉abs的括号 - -6楼正解 你的字符串有全角括号还以为你说我呢往回看了一下,楼主的代码有全角笔误吧,代码中可能全角?嗯 是笔误 没有全角 谢谢大神 就是这个效果 !万分感谢对了,提示一下,这个正则适合abs()作为最外围的情况,类似以下的不适用:sub(abs());外面又嵌套了多个的括号的情况时,正则里不好判断后面应该截取到哪个括号,建议你使用编码 谢谢大神 就是这个效果 !万分感谢对了,提示一下,这个正则适合abs()作为最外围的情况,类似以下的不适用:sub(abs());外面又嵌套了多个的括号的情况时,正则里不好判断后面应该截取到哪个括号,建议你使用编码感谢提醒 如果遇到sub( abs());这种情况怎么办?编码是什么?怎么解决呢 当时是直觉正则无法做到,今天又看到了一篇文章,过来Mark一下:结论:js的正则是无法做到深度嵌套的匹配的。大多数系统中,正则表达式都无法匹配任意深度的嵌套结构。只能手动写死属于几层嵌套,比如处理单层嵌套的正则是:\([^()]*(\([^()]*\)[^()]*)*\)在以前很长的一段时间里,都没有哪个系统做到了这个支持,不过现在Perl、.NET和PCRE/PHP都提供了解决的办法,比如Perl,以下的正则可以指定嵌套深度¥depth,它使用的是Perl的“string x count”运算符,这个运算符会把string重复count次:$regex = '\('.'(?:[^()]|\(' x $depth . '[^()]*' . '\))*' x $depth .'\)'; 哪写错了 JQ,错了该怎么写? JS DIV问题 网页滚动图片代码问题 梅花雨日历控件怎么平面显示? 如何保存用户名密码直接登陆 关于<a>标签onclick事件。 如何用CSS实现鼠标经过表格的某一行,该行的背景颜色发生改变,移出之后恢复?(不用onmouse事件,用CSS) 如何判断两个矩形是否相交??? 如何取得上传文件的大小 献题供解:如何破加密网站,实现图片的“另存为”? jQuery能不能修改xml文件 body.find('>textarea');是什么意思?
var s="abs((a1+a4)-a5)>d8+d9";
alert(s.replace(/(abs)\(([^\(]*\([^\)]*\)[^\)]*)\)/g,"$1 $2"));
感谢
不过试了一下
var s="abs((d7+d9))>d8+d9";
alert(s.replace(/(abs)\(([^\(]*\([^\)]*\)[^\)]*)\)/g,"$1 $2"));并没有做到 abs(d7+d9) >d8+d9
只是想去掉abs的括号 - -
alert(s.replace(/\babs\((.*)\)/g,"abs $1 ")); //abs (a1+a4)-a5 >d8+d9
感谢
不过试了一下
var s="abs((d7+d9))>d8+d9";
alert(s.replace(/(abs)\(([^\(]*\([^\)]*\)[^\)]*)\)/g,"$1 $2"));并没有做到 abs(d7+d9) >d8+d9
只是想去掉abs的括号 - -
6楼正解 你的字符串有全角括号
var reg = /(abs)(\()((?:[^\(\)]*(?:\([^\)\(]*\))[^\(\)]*)*)(\))/g;
s = s.replace(reg,"$1$3");
感谢
不过试了一下
var s="abs((d7+d9))>d8+d9";
alert(s.replace(/(abs)\(([^\(]*\([^\)]*\)[^\)]*)\)/g,"$1 $2"));并没有做到 abs(d7+d9) >d8+d9
只是想去掉abs的括号 - -
6楼正解 你的字符串有全角括号还以为你说我呢
往回看了一下,楼主的代码有全角
笔误吧,代码中可能全角?
感谢
不过试了一下
var s="abs((d7+d9))>d8+d9";
alert(s.replace(/(abs)\(([^\(]*\([^\)]*\)[^\)]*)\)/g,"$1 $2"));并没有做到 abs(d7+d9) >d8+d9
只是想去掉abs的括号 - -
6楼正解 你的字符串有全角括号还以为你说我呢
往回看了一下,楼主的代码有全角
笔误吧,代码中可能全角?嗯 是笔误 没有全角
谢谢大神 就是这个效果 !万分感谢对了,提示一下,这个正则适合abs()作为最外围的情况,类似以下的不适用:
sub(abs());
外面又嵌套了多个的括号的情况时,正则里不好判断后面应该截取到哪个括号,建议你使用编码
谢谢大神 就是这个效果 !万分感谢对了,提示一下,这个正则适合abs()作为最外围的情况,类似以下的不适用:
sub(abs());
外面又嵌套了多个的括号的情况时,正则里不好判断后面应该截取到哪个括号,建议你使用编码
感谢提醒 如果遇到sub( abs());这种情况怎么办?编码是什么?怎么解决呢
结论:js的正则是无法做到深度嵌套的匹配的。
大多数系统中,正则表达式都无法匹配任意深度的嵌套结构。只能手动写死属于几层嵌套,比如处理单层嵌套的正则是:
\([^()]*(\([^()]*\)[^()]*)*\)
在以前很长的一段时间里,都没有哪个系统做到了这个支持,不过现在Perl、.NET和PCRE/PHP都提供了解决的办法,比如Perl,以下的正则可以指定嵌套深度¥depth,它使用的是Perl的“string x count”运算符,这个运算符会把string重复count次:
$regex = '\('.'(?:[^()]|\(' x $depth . '[^()]*' . '\))*' x $depth .'\)';