对此我有点困惑,也许你们中的一个/某些人可以为我提供一些见识。
我正在尝试匹配1到5组之间的双位数[0-9]
,数字顺序根本没有关系,所以\d
可以正常工作。因此,最小数量为2,最大数量为10。
有效示例:
03
11
2112
1234
945312
234902
12481352
89024589
2348253415
1349843523
无效的示例:
1
123
23490
8902458
134984352
252049568278
234092538134123508
我考虑过/(\d{1,5}){2}/
,但是可以匹配123
,这对我的用例而言是无效的。
显而易见的解决方案是:/(\d{2}|\d{4}|\d{6}|\d{8}|\d{10})/
我想知道是否有比我的基本方法更好的答案。
我故意没有在示例中使用^
和$
,因为这是我正在处理的较大表达式的一部分。更具体地说,为了匹配MGRS东移和北移数字集,有一些已发布的代码on this gist line 57,但是^\d{1,2}[^ABIOYZabioyz][A-Za-z]{2}([0-9][0-9])+
会匹配10个以上的结尾数字,这是无效的。
如果您不熟悉MGRS,我会怀疑很多人都是这样。
1234567890
├───┘├───┘
│ └─ Northing
└────── Easting
12345678
├──┘├──┘
│ └─ Northing
└───── Easting
123456
├─┘├─┘
│ └─ Northing
└──── Easting
1234
├┘├┘
│ └─ Northing
└─── Easting
12
│└─ Northing
└── Easting
答案 0 :(得分:4)
您可以使用单词边界,因为基于较大的上下文,行首和尾行对您不起作用。然后,您只需在1到5组数字对之间进行匹配即可。像这样:
\b(\d{2}){1,5}\b
答案 1 :(得分:2)
答案 2 :(得分:1)
我不是正则表达式的掌握者,但是您可能会做类似/(\d{2}){1,5}/
的操作来要求2套,而允许1-5套2套吗?