关于js正则表达式的非获取匹配的问题!!!

wsaseven 2009-02-10 09:28:52
有一组字符串: str = "AQ;BM; CN;eDP; EX; FX";
我想要的结果是:
------结果-------
AQ
BM
CN
eDP
EX
FX
-----------------
也就是说,我想要把;号前面不是e(或者说不是&#加数字)的所有;替换成<br />

我试用过的方法:
<script type="text/javascript">
function RE()
{
var str = "AQ;BM; CN;eDP; EX; FX";
alert(str.replace(/[^&#\d+;];\s*/gm,'<br />')); //方法一
alert(str.replace(/(?!&#\d+;);\s*/gm,'<br />')); //方法二
}
</script>

注: 方法一可以找到(;)分号前面不是&#数字的并替换,但问题是会把(;)分号前面多替换掉一个字符,所以失败.
方法二是我找js正则帮助文档,按照里面的描述写的,可能是我理解错误,出来的结果同预期也不一样,所以失败.

问: 希望哪位兄弟姐妹可以帮帮我解决这个问题..谢谢!!

...全文
818 11 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
xinyung 2009-02-10
  • 打赏
  • 举报
回复
没有问题啊
ecn = "AQ;BM; CN;eDP;  EX; FX" 
Set regEx = New RegExp
regEx.Pattern = "(&#\d+;)?(\w+);\s*"
regEx.IgnoreCase = True
regEx.Global = True
ecn = regEx.replace(ecn,"$1$2<br>")
MsgBox(ecn)
wsaseven 2009-02-10
  • 打赏
  • 举报
回复
xinyung兄, 你写的第一眼看,思路是对的,不过结果不对...
现在的问题是,js的replace(A,B)的B可以用函数, 但vbscript的replace(A,B)的B好象不能是函数...
怎么办呢??????
xinyung 2009-02-10
  • 打赏
  • 举报
回复
regEx.Pattern = "(&#\d+)?(\w+);\s*"
regEx.IgnoreCase = True
regEx.Global = True
ecn = regEx.replace(ecn,"$1$2<br>")
wsaseven 2009-02-10
  • 打赏
  • 举报
回复
因为刚刚的是js里的应用,如果我放到vbscript里,要怎么写呢?
<script type="text/javascript">
var s = 'AQ;BM; CN;eDP; EX; FX';

var s2 = s.replace(/(&#\d+)?;/ig,function(a,b){return b?b+';':' <br/>'});

alert(s+'\n'+s2);
</script>
例如:

ecn = "AQ;BM; CN;eDP; EX; FX"
Set regEx = New RegExp
regEx.Pattern = "正则表达式"
regEx.IgnoreCase = True
regEx.Global = True
ecn = regEx.replace(ecn,"<br />")
wsaseven 2009-02-10
  • 打赏
  • 举报
回复
兄弟,你太牛B了, 可以解释一下什么意思吗? 看不太懂...
dh20156 2009-02-10
  • 打赏
  • 举报
回复
<script type="text/javascript">
var s = 'AQ;BM; CN;eDP; EX; FX';

var s2 = s.replace(/(&#\d+)?;/ig,function(a,b){return b?b+';':'<br/>'});

alert(s+'\n'+s2);
</script>
wsaseven 2009-02-10
  • 打赏
  • 举报
回复
终于解决了:
regEx.Pattern = "(&#\d+;\s*)?([a-zA-Z+\s*]);\s*"

非常感谢xinyung兄弟和dh20156兄的热情帮助.散分....
xinyung 2009-02-10
  • 打赏
  • 举报
回复
这样
regEx.Pattern = "(&#\d+;)?\s*(\w+);\s*"
wsaseven 2009-02-10
  • 打赏
  • 举报
回复
还是:
regEx.Pattern = "(&#\d+;\s*)?(\w+);\s*"
wsaseven 2009-02-10
  • 打赏
  • 举报
回复
regEx.Pattern = "(&#\d+;)?(\w+|\s);\s*"
这样写对吗?
wsaseven 2009-02-10
  • 打赏
  • 举报
回复
晕,兄弟,不好意思,你的程序没有错, 是我的例子举的有问题!
实际上我应该这样写:

ecn = "There is a apple or a orange;Thank you very much"
处理后显示:
There is a apple or a orange
Thank you very much

87,997

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧