我有这样的字符串
这些字符串是数据矩阵字符串,我需要按照以下方式拆分字符串。
每个块都以固定的代码开头,后面跟着数字或字符。
我创建了这个正则表达式:
正则表达式匹配
01084700069811461719010010285322921DA192089940088
01084700088763891719050010BM2120
这些字符串是数据矩阵字符串,我需要按照以下方式拆分字符串。
0108470006981146 17190100 102853229 21DA192089940088
0108470008876389 17190500 10BM2120
每个块都以固定的代码开头,后面跟着数字或字符。
- 01 + 14位数字
- 17 + 6位数字
- 10 + 1到20个字符
- 21 + 1到20个字符
我创建了这个正则表达式:
/^(01\d{14})(?:(17\d{6}))*(?:(10\w*))*(?:(21\w*))*$/
这个字符串是正确的
01084700088763891719050010BM2120
Group 1. 0108470008876389 (ok)
Group 2. 17190500 (ok)
Group 3. 10BM2120 (ok)
但对于另一个字符串
01084700069811461719010010285322921DA192089940088
正则表达式匹配
Group 1. 0108470006981146 (ok)
Group 2. 17190100 (ok)
Group 3. 10285322921DA192089940088 (no)
我无法创建一个能够正确匹配第三个和第四个块的正则表达式,因为它们的字符数量没有固定长度,并且第三个块中可能会有字符串“21”,这也是下一个块的起始代码。
可以创建一个能够正确匹配字符串所有部分的正则表达式。
感谢大家。
b
,c
或d
可以是可选的,请尝试使用^(01\d{14})(17\d{6})?(10\w{1,20})?(21\w{1,20})?$
。 - Wiktor Stribiżew0108470008876389 17190500 10BM 2120
不是有效的? - Redu