ASP 求一正则表达式

hinavy 2005-09-28 06:05:33
目的:把从数据库从取出来的内容中的<script </script>标签中的内空转换成其他内容

举例如下:

在access数据库中有一文章内容字段ArticleContent(备注型),里面的代码为:

按时打发士大夫<script>
document.write('这是JAVASCRIPT程序测试!');
</script>

现在我想用正则表达式把字符串过滤成为

按时打发士大夫<script language=javascript>
document.write('这是JAVASCRIPT程序测试!');
</script>

如果直接把值给变量,如
str = "按时打发士大夫<script language=javascript> document.write('这是JAVASCRIPT程序测试!'); </script><font color=#996633>批就 安排士大夫</font>"

response.write "这是script 替换:"®Exptemp("\<script (.+?)\>(.+?)\<\/script\>",str,"<script language=javascript>$2</script>")

这样就可以完成替换,但是值是从数据库里取出来就是不行,请问这是为什么
请帮我写一下这个正则!~~~多谢~~~

(初步估计是把数据写入数据库中的时候,在数据库的数据好像有什么换行的现象,具体不一定是在字符串的哪个位置换行,而且如果用htmlserver(rs("ArticleContent"))显示内容的时候,没有发现换行现象。。郁闷。。。。)
...全文
211 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
hinavy 2005-09-30
  • 打赏
  • 举报
回复
求助
hinavy 2005-09-29
  • 打赏
  • 举报
回复
大家帮忙啊
hinavy 2005-09-29
  • 打赏
  • 举报
回复
而且,通过在线编辑器提交过来的,如果在普通状态下编辑内容输入:
<scipt>

document.write('test');

</script>

输以上代码的时候中间未用Shift+Enter的时候,HTML源码如下:
<P><script></P>
<P>document.write('test');</P>
<P></script></P>

这种情况,好像用刚才的那个正则表达式不能效的进行替换

请帮忙。谢谢
hinavy 2005-09-29
  • 打赏
  • 举报
回复
嗯,谢谢

晕,我试了一下,在WEB编辑器里提交过来的,怎么识别不出。。
源码是

<TABLE>
<TBODY>
<TR>
<TD>中国是我家中国是我家中国是我家<BR>
中国是我家中国是我家中国是我家<BR>
<SCRIPT language=javascript>
document.write('<font color=red>是真的!</font><br>');
</SCRIPT>
<FONT
color=red>是真的!</FONT><BR>
中国是我家中国是我家中国是我家<BR>
中国是我家中国是我家中国是我家<BR></TD>
</TR>
</TBODY>
</TABLE>

我用的是
TmpArticleContent=RegExptemp("(<script)( [^<>]*?)(*>)(.*?)(</script>)",aArticleContent,"<div style=""background-color:#ffffff;break-word:break-all;border:1 #000000 solid;width=500px;"">[JScode]$2[/JScode]</div>")

请这位朋友再帮帮忙,谢谢,谢谢。。。。了
jzywh 2005-09-29
  • 打赏
  • 举报
回复
那就应该是这样的


<%
strObj="<script language=javascript>document.write('这是JAVASCRIPT程序测试!');</script>"
Set regEx = New RegExp ' 建立正则表达式。
regEx.Pattern = "<script( [^<>]*?)*>(.*?)</script>" ' 设置模式。
regEx.IgnoreCase = True
regEx.Global = True
response.write regEx.replace(strObj,"<div style=""background-color:#ffffff;break-word:break-all;border:1 #000000 solid;width=500px;"">[JScode]$2[/JScode]</div>")
%>
jzywh 2005-09-29
  • 打赏
  • 举报
回复
你的意思是把 脚本都放到div里面?那这样当然不行啦!
hinavy 2005-09-29
  • 打赏
  • 举报
回复
按这种方法替换后的又一个问题:
这是我的语句:
TmpArticleContent=RegExptemp("<(/?)script( [^<>]*?)*>",aArticleContent,"<div style=""background-color:#ffffff;break-word:break-all;border:1 #000000 solid;width=500px;"">[$1JScode]</div>")

这样子显示出来的代码没有显示在这个层里,而只有[JScode]显示在层里,请问,要如何修改呢。。
谢谢
jzywh 2005-09-29
  • 打赏
  • 举报
回复
(/?) 0个或1个 /


[^<>] 非<或>

[^<>]* 非<或> 0个或多个

[^<>]*? 最小化匹配 非<或> 0个或多个

( [^<>]*?)* 0个或多个 最小化匹配 非<或> 0个或多个 的这种组合




hinavy 2005-09-29
  • 打赏
  • 举报
回复
我用的是取前面<script +内容+</script>,为什么取不出,很困惑,呵呵
hinavy 2005-09-29
  • 打赏
  • 举报
回复
哈,正是我想要的,谢谢了,能不能解释一下
<(/?)script( [^<>]*?)*>


非常感谢,速度点,我马上结分给你~~~
jzywh 2005-09-29
  • 打赏
  • 举报
回复
上面是[script]

下面是[JScode]


<%
strObj="<script language=javascript>document.write('这是JAVASCRIPT程序测试!');</script>"
Set regEx = New RegExp ' 建立正则表达式。
regEx.Pattern = "<(/?)script( [^<>]*?)*>" ' 设置模式。
regEx.IgnoreCase = True
regEx.Global = True
response.write regEx.replace(strObj,"[$1JScode]")
%>



jzywh 2005-09-29
  • 打赏
  • 举报
回复
<%
strObj="<script language=javascript>document.write('这是JAVASCRIPT程序测试!');</script>"
Set regEx = New RegExp ' 建立正则表达式。
regEx.Pattern = "<(/?)script( [^<>]*?)*>" ' 设置模式。
regEx.IgnoreCase = True
regEx.Global = True
response.write regEx.replace(strObj,"[$1script]")
%>

这个是不是你要的?
hinavy 2005-09-29
  • 打赏
  • 举报
回复
那个我懂,我现在想要用正则表达式
比如我要把

<script language=javascript>
document.write('这是JAVASCRIPT程序测试!');
</script>

转换成

[JScode]
document.write('这是JAVASCRIPT程序测试!');
[/JScode]

的正则表达式

jzywh 2005-09-29
  • 打赏
  • 举报
回复
直接 Server.HtmlEncode(str)
dingjin_dj 2005-09-29
  • 打赏
  • 举报
回复
up
hinavy 2005-09-29
  • 打赏
  • 举报
回复
d
hinavy 2005-09-29
  • 打赏
  • 举报
回复
d

28,406

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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