正则过滤前后间隔字符

lingyun410 2008-12-24 02:18:29
使用正则将不合理的字符给去除,返回一规范字符串
如:
,,2,23,#2,,,
过滤成:
2,23,2
这个正则应该如何写?
...全文
107 10 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
<%
strng=",,2,23,#2,,,"
function formatstr(re,str,slink)
Set regex = New RegExp
regex.Pattern =re
regex.IgnoreCase = True ' 设置是否区分字符大小写。
regex.Global = True ' 设置全局可用性。
Set Matches = regex.Execute(str) ' 执行搜索。
For Each Match in Matches ' 遍历匹配集合。
if RetStr="" then
RetStr =Match.Value
else
RetStr = RetStr&slink& Match.Value
end if
Next
formatstr=RetStr
Set regex = Nothing
end function
response.Write formatstr("[\d]{1,}",strng,",")
%>


上面粗心写漏了
  • 打赏
  • 举报
回复
<%
strng=",,2,23,#2,,,"
function formatstr(re,str,slink)
Set regex = New RegExp
regex.Pattern =re
regex.IgnoreCase = True ' 设置是否区分字符大小写。
regex.Global = True ' 设置全局可用性。
Set Matches = regex.Execute(str) ' 执行搜索。
For Each Match in Matches ' 遍历匹配集合。
if RetStr="" then
RetStr =Match.Value
else
RetStr = RetStr&slink& Match.Value
end if
Next
Set regex = Nothing
response.Write formatstr("[\d]{1,}",strng,",")
%>
  • 打赏
  • 举报
回复
pid=findhtml("([\d]+,)",str)
pid=left(pid,len(pid)-1) '去掉最的一个,

类似这样方式的正则都不可靠

假如我的字符串是str="#2##23@@2,#"
或者是str=",,2#,23#,#2#,,, "
这一类的呢??

那么不就查找不到了吗??

仔细看我4楼的吧,我觉得那样是最稳妥的正则了
dgboby 2008-12-25
  • 打赏
  • 举报
回复

'给你一个简单,一个正则搞定
function findhtml(pd,str)
dim sheng_url
Set objRegExp1 = New Regexp
objRegExp1.IgnoreCase = True
objRegExp1.Global = True
objRegExp1.Pattern = pd
set mm=objRegExp1.Execute(str)
For i= 0 to mm.count -1
sheng_url=sheng_url&objRegExp1.Replace(mm.item(i),"$1")

Next
set objRegExp1=nothing
findhtml=sheng_url
end function




dim str,pd,pid


str=",,2,23,#2,,, "


'正则获取ID值

pid=findhtml("([\d]+,)",str)
pid=left(pid,len(pid)-1) '去掉最的一个,

'输出值
response.write pid
'结果显示如下:2,23,2





Dogfish 2008-12-25
  • 打赏
  • 举报
回复
a = ",,2,23,#2,,,"
Dim regex
Set regex = New RegExp

regex.Pattern = "[^\d,]"
regex.Global = True
a = regex.Replace(a, "")
regex.Pattern = "[,]{2,}"
a = regex.Replace(a, ",")
regex.Pattern = "(,$)|(^,)"
a = regex.Replace(a, "")

Set regex = Nothing
MsgBox a
wcwtitxu 2008-12-25
  • 打赏
  • 举报
回复

Dim regex
Set regex = New RegExp
regex.Global = True ' 上面少了
regex.Pattern = "[^\d,]"
str = regex.Replace(str, "")
regex.Pattern = "^\,+|\,+$|(\,)\,*"
str = regex.Replace(str, "$1")

Set regex = Nothing
  • 打赏
  • 举报
回复
<%
strng=",,2,23,#2,,,"
Set regex = New RegExp
regex.Pattern = "[\d]{1,}"
regex.IgnoreCase = True ' 设置是否区分字符大小写。
regex.Global = True ' 设置全局可用性。
Set Matches = regex.Execute(strng) ' 执行搜索。
For Each Match in Matches ' 遍历匹配集合。
if RetStr="" then
RetStr =Match.Value
else
RetStr = RetStr&","& Match.Value
end if
Next
Set regex = Nothing
response.Write RetStr
%>
wcwtitxu 2008-12-24
  • 打赏
  • 举报
回复
Dim regex
Set regex = New RegExp

regex.Pattern = "[^\d,]"
str = regex.Replace(str, "")
regex.Pattern = "^\,+|\,+$|(\,)\,*"
str = regex.Replace(str, "$1")

Set regex = Nothing
t122 2008-12-24
  • 打赏
  • 举报
回复
楼上正解
king_woods 2008-12-24
  • 打赏
  • 举报
回复
将它与正整数(^[1-9]\d*$ )匹配
匹配成功的数将其串接成一个字符串变量就可以啦

28,409

社区成员

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

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