求个正则。。。。

文盲老顾
WEB应用领新星创作者
博客专家认证
2012-04-19 08:24:38
求个取序号的正则

比如

Title 22 Judiciary ==> Title 22

Subtitle A Judicial Administration ==> Subtitle A

序号前必定有空格,但有可能是字符串末尾

序号的形式有:纯数字、单个字母、罗马数字(由字母组成,但不会超过6位,即由IVX组成)、22.1(带小数点的数字)、22-B、G22-A、B-11、SE1A

我自己写了个 [\s\S]*? (([\d]+)|([a-zA-Z]{1,1})|([IVX]+){1,6}|([\d]+\.[\d]+)|([\d]+-[a-zA-Z]+)|([a-zA-Z]+-[\d]+)|([a-zA-Z]+[\d]+-[a-zA-Z]+)|([a-zA-Z]+[\d]+[a-zA-Z]+))?( |$)

但总是有很多情况取的结果不对

Proposed uniform application for license as a legal consultant,比如这个字符串是没有序号的,结果却被当作有序号的字符串处理了。。。
...全文
52 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
001007009 2012-04-20
  • 打赏
  • 举报
回复
现在只写了
纯数字、单个字母、罗马数字(由字母组成,但不会超过6位,即由IVX组成)、22.1(带小数点的数字)

其他的楼主 可以自己加
var re = /^(.*?\s(?=(\d+(\.\d+)?|[a-z]|[ixv]{1,6}|其他|其他)\s)[^\s]+)\s?.*$/i;
001007009 2012-04-20
  • 打赏
  • 举报
回复

var arr = [
'Title 22 Judiciary',
'Subtitle A Judicial Administration',
'Proposed uniform application for license as a legal consultant',
'Family protection registry information sheet',
'title vvvvv abc',
'title 22.1 abc',
]
var re = /^(.*?\s(?=(\d+(\.\d+)?|[a-z]|[ixv]{1,6})\s)[^\s]+)\s?.*$/i;
var i = 0;
var len = arr.length;
while(i < len){
console.log(arr[i] +' -- '+ re.test(arr[i]) + ' -- '+ RegExp.$1);
i++;
}



试试。
文盲老顾 2012-04-19
  • 打赏
  • 举报
回复
刚才那个有个小写字母a,不算

Family protection registry information sheet,这个字符串也会被当作有序号处理。。。

被处理成 Family protection 了

28,391

社区成员

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

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