求正则表达式 在线等

z8h8y8 2011-04-08 12:42:30
[test/]

[test /] 例如:([testxxxx/][testxxxx /]这样的不要匹配)

[test num="5" xx="1"/]

[test num="5" xx="1" /](区别是后面有无空格均可匹配,就像HTML里的<br/> <br /> <input/> <input />)

------------------------------------------------------------------------------------------------

[test]未知格式的内容(可能存在换行)[/test]

[test num="5" xx="1"]未知格式的内容(可能存在换行)[/test](这个区别是test后面有无[空格]和[属性])

例如:[test ][/test](这样的是错误的,不匹配)

总体和HTML标签差不多,自己写了几个 都存在匹配进来错误的情况。

上面虚线分开的部分可以写成2个表达式,如果写在一起估计很复杂,可能测试也容易漏掉。
...全文
93 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
Atai-Lu 2011-04-08
  • 打赏
  • 举报
回复
恩,这个不能用全局匹配

//i 不区分大小写
//g 全局匹配,简而言之,就是找到所有的匹配,而不是在找到第一个之后就停止了
//m 多行模式
var reg=/(\[test\b[^\/]*\/\])|(\[test\b[^\]]*\][\s\S]*?\[\/test\])/i;
//或者
var reg=/(\[test\b[^\/]*\/\])|(\[test\b[^\]]*\][\s\S]*?\[\/test\])/im;
Atai-Lu 2011-04-08
  • 打赏
  • 举报
回复

var reg=/(\[test\b[^\/]*\/\])|(\[test\b[^\]]*\][\s\S]*?\[\/test\])/i;
//还是刚才的正则,匹配模式改下,不要mg了
//调试结果如下
var str="[test /]";
alert(reg.test(str));//true

var str="[test/]";
alert(reg.test(str));//true

str="[test]sdfd[/test]";
alert(reg.test(str));//true

str="[test a=ss]sdfd[/test]";
alert(reg.test(str));//true

str="[testss /]";//false
alert(reg.test(str));

str="[testsss a=ss]sdfd[/test]";
alert(reg.test(str));//false
z8h8y8 2011-04-08
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 luxu001207 的回复:]
错了,刚没调试过,在试试...
[/Quote]

谢谢 在测试中 下面这2个很难区分吧:

[test ][/test] 不合格的匹配

[test num="5"][/test] 正确的

[test][/test] 正确的
Atai-Lu 2011-04-08
  • 打赏
  • 举报
回复
错了,刚没调试过,在试试...
z8h8y8 2011-04-08
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 sulel1 的回复:]
(\[test[^\]]+]|\[test])(.+|[^.]+?)\[\/test\]
[/Quote]

[test ][/test] 这个带空格的还是会匹配。
Atai-Lu 2011-04-08
  • 打赏
  • 举报
回复

var reg=/(\[test\b[^\/]*\/\])|(\[test\b[^\]]*\][\s\S]*?\[\/test\])/img;
//\s+改成\b
var str="[test /]";
alert(reg.test(str));

var str="[test/]";
alert(reg.test(str));

str="[test]sdfd[/test]";
alert(reg.test(str));

str="[test a=ss]sdfd[/test]";
alert(reg.test(str));

str="[testss /]";
alert(reg.test(str));
z8h8y8 2011-04-08
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 luxu001207 的回复:]
JScript code

var reg=/(\[test\s+[^\/]*\/\])|(\[test\s+[^\]]*\][\s\S]*?\[\/test\])/img;
var str="[test /]";//匹配
alert(reg.test(str));//true

str="[test a=ss]sdfd[/test]";//匹配
alert(reg.test(str……
[/Quote]

[test/]

[test][/test]都无法匹配。
Atai-Lu 2011-04-08
  • 打赏
  • 举报
回复

var reg=/(\[test\s+[^\/]*\/\])|(\[test\s+[^\]]*\][\s\S]*?\[\/test\])/img;
var str="[test /]";//匹配
alert(reg.test(str));//true

str="[test a=ss]sdfd[/test]";//匹配
alert(reg.test(str));//true

str="[testss /]";//不匹配
alert(reg.test(str) + "s");//false
暗淡亮点 2011-04-08
  • 打赏
  • 举报
回复
第一个改成
\[test[^]]*/\]
将会匹配你说的内容,包括里面有属性
暗淡亮点 2011-04-08
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 z8h8y8 的回复:]
引用 1 楼 suleil1 的回复:
第一个:\[(test|test\s)/\]
第二个:(\[test[^\]]+]|\[test])(.+|[^.]+)\[\/test\]

具体需要搜索的内容你没给出来,按照你写的意思我给你写了几个,测试无误。


第一个:[test num="5"/] [test num="5" /]这个无法匹配

第二个:[test ]内容[/te……
[/Quote]
第一个你没说会有属性……
我再写。
第二个改成
(\[test[^\]]+]|\[test])(.+|[^.]+?)\[\/test\]
z8h8y8 2011-04-08
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 suleil1 的回复:]
第一个:\[(test|test\s)/\]
第二个:(\[test[^\]]+]|\[test])(.+|[^.]+)\[\/test\]

具体需要搜索的内容你没给出来,按照你写的意思我给你写了几个,测试无误。
[/Quote]

第一个:[test num="5"/] [test num="5" /]这个无法匹配

第二个:[test ]内容[/test]这个也能匹配。
暗淡亮点 2011-04-08
  • 打赏
  • 举报
回复
第一个:\[(test|test\s)/\]
第二个:(\[test[^\]]+]|\[test])(.+|[^.]+)\[\/test\]

具体需要搜索的内容你没给出来,按照你写的意思我给你写了几个,测试无误。

28,391

社区成员

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

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