我需要通过正则表达式验证以下条形码:
TE1310 2000183B 804F58000020183B 20120509 0013.0002.0000 20161201
我们的条形码扫描仪偶尔会从条形码中删除一些字符,因此我需要通过以下正则规则验证它:
我有以下正则表达式&我很接近但不确定如何做#7以上(0013.0002.0000)。我放了“????”进入下面的正则表达式,我不确定如何做这个部分:
TE1310 \ S [A-ZA-Z0-9] {8} \ S [A-ZA-Z0-9] {16} \ S ???? \ S \ d {8}
知道怎么做吗? 感谢
答案 0 :(得分:3)
我假设一个类似于JavaScript的正则表达式语法,基本思想可以转换成我所知道的任何其他正则表达式。
^TE1310
^
仅用于匹配字符串的开头,后面的字符按字面匹配。
/^TE1310 /
我正在添加/
正则表达式分隔符,以显示正则表达式中实际包含空格字符。如果您的正则表达式语法支持替代分隔符,您可能会看到~^TE1310 ~
的某些内容。
/^TE1310 [a-zA-Z0-9]{8}/
[abc]
用于选择提供的集合中的字符,a-zA-Z0-9
的使用是匹配任何字母(大写或小写)或数字。
{n}
用于重复之前的选择器n
次。
/^TE1310 [a-zA-Z0-9]{8} /
/^TE1310 [a-zA-Z0-9]{8} [a-zA-Z0-9]{16}/
/^TE1310 [a-zA-Z0-9]{8} [a-zA-Z0-9]{16} /
0013.0002.0000
/^TE1310 [a-zA-Z0-9]{8} [a-zA-Z0-9]{16} 0013\.0002\.0000/
\.
用于转义.
,它是任何非换行符的选择器。如果您正在使用字符串构建正则表达式,则可能需要双重转义\
字符,因此它可能是\\.
而不是\.
/^TE1310 [a-zA-Z0-9]{8} [a-zA-Z0-9]{16} 0013\.0002\.0000 /
/^TE1310 [a-zA-Z0-9]{8} [a-zA-Z0-9]{16} 0013\.0002\.0000 \d{8}/
\d
匹配数字,相当于[0-9]
。与\.
类似,您可能需要双倍转义\
字符,而不是\\d
。
您没有明确提及它,但我认为匹配应该只匹配与此模式完全匹配的行,并且后面跟不是尾随数字/字母:
/^TE1310 [a-zA-Z0-9]{8} [a-zA-Z0-9]{16} 0013\.0002\.0000 \d{8}$/
$
用于匹配字符串的最后一部分。
答案 1 :(得分:2)
#7
是微不足道的,它应该只是0013\.0002\.0000
你必须确保逃避你的时期,并逃脱你的逃脱角色,如果这是语言需要的
所以,试试
TE1310\s[A-Za-z0-9]{8}\s[A-Za-z0-9]{16}\s0013\.0002\.0000\s\d{8}
当然,假设其余的点是正确的。
此外,正如Sednus
所述,您可能希望匹配字符串的开头和结尾。常规符号的开头为^
,结尾为$
,但为了以防万一,我会检查您的特定语言的参考。
如果你不这样做,正则表达式会在更大的字符串中找到任何TE1310 2000183B 804F58000020183B 20120509 0013.0002.0000 20161201
,例如
asgsdaTE1310 2000183B 804F58000020183B 20120509 0013.0002.0000 20161201qeasdfa