这个正则肿么了?

afu45 2011-10-16 04:45:51
其实就是qq聊天记录代码匹配,提取出(昵称 时间)来

<BR>Have to  12:00:41<BR>
<BR>客服-小新  12:00:59<BR>
<BR>989849684  12:01:48<BR>
<BR>兜里有糖  12:02:20<BR>



我写了个正则,只能匹配后3几种,但是对于第1种 昵称里也包含 的该怎么写?

var reg = /<BR>(.[^BR]+?[ ]+\d{1,2}:[0-5][0-9]:[0-5][0-9])<BR>/gi



测试代码
<DIV><BR><BR>308412524  17:36:30<BR>你好 在哪里办理那个会员?<BR>客服-小新  17:36:37<BR> 您好<BR><BR>没人牵我手,我就揣兜里  17:37:04<BR>谢谢<BR>Have to  12:00:41<BR>你好,,在不?<BR>客服-小白  12:00:59<BR>您好 在的<BR>客服-小白  12:01:43<BR>请问您有什么需要的吗?<BR>Have to  12:01:48<BR>我想请问下?<BR><BR></DIV>
...全文
135 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
afu45 2011-10-17
  • 打赏
  • 举报
回复
谢谢兔子党
我彻底败给正则了

结贴。。。
afu45 2011-10-17
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 q107770540 的回复:]
/<BR>(.+?[&nbsp;]+?\d{1,2}:[0-5][0-9]:[0-5][0-9])<BR>/gi
[/Quote]

还是不行,如果说话内容里包含<BR> 就会把<BR>的后半部分内容一起匹配到下面一个昵称里了

<html>
<head>
<title>TEST</title>
</head>
<body>
<div id="show">
<BR>308412524  17:36:30<BR>你好 <BR>在哪里办理那个会员?<BR>客服-小新
  17:36:37<BR> 您好<BR><BR>没人牵我手,我就揣兜里  17:37:04<BR>谢谢
<BR>Have to  12:00:41<BR>你好,,在不?<BR>客服-小白  12:00:59<BR>您好 在的
<BR>客服-小白  12:01:43<BR>请问您有什么需要的吗?<BR>Have to  12:01:48<BR>我想请问
下?<BR><BR>No Word ²º¹²  18:57:36<BR>在不在?<BR>客服-小马
  18:58:12<BR>您好,在的<BR>No Word ²º¹²  18:58:22<BR>问题
一样啊,<BR>我重装了还是有那个noc.exe<BR>下的是那个最新版
<BR>No Word ²º¹²  18:59:25<BR>吐血<BR>怎么弄?<BR>客服-小马
  19:00:04<BR>好的,您说情况我们及时提交项目组测试,明天上午有结果,会第一时间通知您的
<BR>No Word ²º¹²  19:00:17<BR>我倒!我现在就要用呢<BR>发个老版本的给
我<BR>客服-小马  19:00:36<BR>官网有历史版本下载<BR>现在项目组人员已经下班了
<BR>No Word ²º¹²  19:01:39<BR>恩,<BR>客服-小马
  19:02:14<BR>请您说下具体您的无盘系统版本发个截图看下<BR>您那边有多少台机器要管理呢?以便测试
<BR>No Word ²º¹²  19:02:31<BR>网众,7.0<BR>80台<BR>客服-小马
  19:03:16<BR>方便能截个操作系统,我的电脑,右键属性 系统信息截图<BR></DIV>
<script language="JavaScript">
var sToChange = document.getElementById("show").innerHTML;
//var reg = /<BR>(.[^BR]+?[ ]*\d{1,2}:\d{1,2}:\d{1,2})[ ]?<BR>/gi //
//var reg = /<BR>(.+?\d{1,2}:\d{1,2}:\d{1,2})[ ]?<BR>/gi //匹配不正确
//var reg = /(?is)<br>(.*?)(?: ){2}[\d:]+<br>/gi //这个在C#里正常,在JS里提示语法错误
var reg = /<BR>(.+?[ ]+?\d{1,2}:[0-5][0-9]:[0-5][0-9])<BR>/gi; //

var result = sToChange.replace(reg, function (sMatch) {
var backStr = "<font color='#Ff0000'>";
if (sMatch.length > 8) {
if (sMatch.substr(4, 2) == "客服") {
backStr = "<font color='#0000fF'>";
}
}
backStr += sMatch;
backStr += "</font>";
return backStr;
});
document.getElementById("show").innerHTML = result;
</script>
</body>
</html>



就是3楼的在C#里匹配正常,可是放到js里提示错误
huangwenquan123 2011-10-17
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 afu45 的回复:]
3楼的代码在c#里没问题

但是为什么放到js里 就报错呢?

消息: 正则表达式语法错误


C# code
<html>
<head>
<title>TEST</title>
</head>
<body>
<div id="show">
<BR>308412524&nbsp;&nbsp;17:36:30<BR>你好&nbsp;<BR>在哪里办……
[/Quote]

<body>
<div id="show">
<BR>308412524  17:36:30<BR>你好 <BR>在哪里办理那个会员?<BR>客服-小新

  17:36:37<BR> 您好<BR><BR>没人牵我手,我就揣兜里  17:37:04<BR>谢谢

<BR>Have to  12:00:41<BR>你好,,在不?<BR>客服-小白  12:00:59<BR>您好 在的

<BR>客服-小白  12:01:43<BR>请问您有什么需要的吗?<BR>Have to  12:01:48<BR>我想请问

下?<BR><BR>No Word ²º¹²  18:57:36<BR>在不在?<BR>客服-小马

  18:58:12<BR>您好,在的<BR>No Word ²º¹²  18:58:22<BR>问题

一样啊,<BR>我重装了还是有那个noc.exe<BR>下的是那个最新版

<BR>No Word ²º¹²  18:59:25<BR>吐血<BR>怎么弄?<BR>客服-小马

  19:00:04<BR>好的,您说情况我们及时提交项目组测试,明天上午有结果,会第一时间通知您的

<BR>No Word ²º¹²  19:00:17<BR>我倒!我现在就要用呢<BR>发个老版本的给

我<BR>客服-小马  19:00:36<BR>官网有历史版本下载<BR>现在项目组人员已经下班了

<BR>No Word ²º¹²  19:01:39<BR>恩,<BR>客服-小马

  19:02:14<BR>请您说下具体您的无盘系统版本发个截图看下<BR>您那边有多少台机器要管理呢?以便测试

<BR>No Word ²º¹²  19:02:31<BR>网众,7.0<BR>80台<BR>客服-小马

  19:03:16<BR>方便能截个操作系统,我的电脑,右键属性 系统信息截图<BR></DIV>

<script language="JavaScript">
var html = document.getElementById("show").innerHTML;
var reg = /<br>((?:(?!<br).)*)(?: ){2}\d{2}:\d{2}:\d{2}<br>/ig;
document.write("============<br/>");
while(reg.exec(html))
document.write(RegExp.$1+"<br/>")
</script>
</body>


/*
308412524
客服-小新
没人牵我手,我就揣兜里
Have to
客服-小白
客服-小白
Have to
No Word ²º¹²
客服-小马
No Word ²º¹²
No Word ²º¹²
客服-小马
No Word ²º¹²
客服-小马
No Word ²º¹²
客服-小马
No Word ²º¹²
客服-小马
*/
q107770540 2011-10-17
  • 打赏
  • 举报
回复
/<BR>(.+?[ ]+?\d{1,2}:[0-5][0-9]:[0-5][0-9])<BR>/gi
afu45 2011-10-17
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 soonfei 的回复:]
JScript code

var str = "<BR>Have&nbsp;to&nbsp;&nbsp;12:00:41<BR><BR>客服-小新&nbsp;&nbsp;12:00:59<BR><BR>989849684&nbsp;&nbsp;12:01:48<BR><BR>兜里有糖&nbsp;&nbsp;12:02:2……
[/Quote]

也不行,我要的不是替换掉换行
诺维斯基 2011-10-17
  • 打赏
  • 举报
回复
var str = "<BR>Have to  12:00:41<BR><BR>客服-小新  12:00:59<BR><BR>989849684  12:01:48<BR><BR>兜里有糖  12:02:20<BR>";

var re = / |<\/?br>/ig;
var newstr = str.replace(re, "");
alert(newstr);


这个怎么样!!!
afu45 2011-10-17
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 somethingjack 的回复:]
看到楼主头像我忍不住笑了- - 差点被老大看到 汗
[/Quote]

你们老大都不准你笑啊
SomethingJack 2011-10-17
  • 打赏
  • 举报
回复
看到楼主头像我忍不住笑了- - 差点被老大看到 汗
afu45 2011-10-17
  • 打赏
  • 举报
回复
3楼的代码在c#里没问题

但是为什么放到js里 就报错呢?

消息: 正则表达式语法错误

<html>
<head>
<title>TEST</title>
</head>
<body>
<div id="show">
<BR>308412524  17:36:30<BR>你好 <BR>在哪里办理那个会员?<BR>客服-小新

  17:36:37<BR> 您好<BR><BR>没人牵我手,我就揣兜里  17:37:04<BR>谢谢

<BR>Have to  12:00:41<BR>你好,,在不?<BR>客服-小白  12:00:59<BR>您好 在的

<BR>客服-小白  12:01:43<BR>请问您有什么需要的吗?<BR>Have to  12:01:48<BR>我想请问

下?<BR><BR>No Word ²º¹²  18:57:36<BR>在不在?<BR>客服-小马

  18:58:12<BR>您好,在的<BR>No Word ²º¹²  18:58:22<BR>问题

一样啊,<BR>我重装了还是有那个noc.exe<BR>下的是那个最新版

<BR>No Word ²º¹²  18:59:25<BR>吐血<BR>怎么弄?<BR>客服-小马

  19:00:04<BR>好的,您说情况我们及时提交项目组测试,明天上午有结果,会第一时间通知您的

<BR>No Word ²º¹²  19:00:17<BR>我倒!我现在就要用呢<BR>发个老版本的给

我<BR>客服-小马  19:00:36<BR>官网有历史版本下载<BR>现在项目组人员已经下班了

<BR>No Word ²º¹²  19:01:39<BR>恩,<BR>客服-小马

  19:02:14<BR>请您说下具体您的无盘系统版本发个截图看下<BR>您那边有多少台机器要管理呢?以便测试

<BR>No Word ²º¹²  19:02:31<BR>网众,7.0<BR>80台<BR>客服-小马

  19:03:16<BR>方便能截个操作系统,我的电脑,右键属性 系统信息截图<BR></DIV>

<script language="JavaScript">
var sToChange = document.getElementById("show").innerHTML;
//var reg = /<BR>(.[^BR]+?[ ]*\d{1,2}:\d{1,2}:\d{1,2})[ ]?<BR>/gi //
var reg = /<BR>(.+?\d{1,2}:\d{1,2}:\d{1,2})[ ]?<BR>/gi //匹配不正确
//var reg = /(?is)<br>(.*?)(?: ){2}[\d:]+<br>/gi //提示语法错误

var result = sToChange.replace(reg, function (sMatch) {
var backStr = "<font color='#Ff0000'>";
if (sMatch.length > 8) {
if (sMatch.substr(4, 3) == "客服") {
backStr = "<font color='#0000fF'>";
}
}
backStr += sMatch;
backStr += "</font>";
return backStr;
});
document.getElementById("show").innerHTML = result;

</script>
</body>
</html>
huangwenquan123 2011-10-16
  • 打赏
  • 举报
回复
            string str = @"<BR>Have to  12:00:41<BR>
<BR>客服-小新  12:00:59<BR>
<BR>989849684  12:01:48<BR>
<BR>兜里有糖  12:02:20<BR>";
Regex reg = new Regex(@"(?is)<br>(.*?)(?: ){2}[\d:]+<br>");
foreach (Match m in reg.Matches(str))
Console.WriteLine(m.Groups[1].Value);
afu45 2011-10-16
  • 打赏
  • 举报
回复
主要就是要匹配的内容里不带<BR>
昵称与时间中间有两个 
昵称内可能含有 

可是就是不知道怎么写。。
求解
CalvinR 2011-10-16
  • 打赏
  • 举报
回复
正则真的不大懂哦
顶帖了

62,041

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

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