Regex 正则表达式:需要验证条形码

Regex 正则表达式:需要验证条形码,regex,Regex,我需要通过regex验证以下条形码: TE1310 2000183B 804F58000020183B 20120509 0013.0002.0000 20161201 我们的条形码扫描器有时会从条形码中删除一些字符,因此我需要通过以下正则表达式规则对其进行验证: 以“TE1310”开头 空间 第二组字符的长度正好是8。可以包含数字或字母 空间 第三组包含16个字符。可以是数字或字母 空间 第四组必须精确为“0013.0002.0000” 空间 第五集和最后一集包含8个字符。仅数字 我有以下正则

我需要通过regex验证以下条形码:

TE1310 2000183B 804F58000020183B 20120509 0013.0002.0000 20161201

我们的条形码扫描器有时会从条形码中删除一些字符,因此我需要通过以下正则表达式规则对其进行验证:

  • 以“TE1310”开头
  • 空间
  • 第二组字符的长度正好是8。可以包含数字或字母
  • 空间
  • 第三组包含16个字符。可以是数字或字母
  • 空间
  • 第四组必须精确为“0013.0002.0000”
  • 空间
  • 第五集和最后一集包含8个字符。仅数字
  • 我有以下正则表达式&我非常接近,但不确定如何执行上面的#7(0013.0002.0000)。我将“?”放在下面的正则表达式中,我不确定如何执行此部分:

    TE1310\s[A-Za-z0-9]{8}\s[A-Za-z0-9]{16}\s???\s\d{8}

    你知道怎么做吗? 谢谢

    #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
    #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

    我假设一个类似于JavaScript的正则表达式语法,基本思想可以转换成我所知道的任何其他正则表达式

    1:从TE1310开始
    ^
    仅用于匹配字符串开头的字符,后面的字符按字面匹配

    2:空间 我添加了
    /
    正则表达式分隔符,以表明正则表达式中实际上包含一个空格字符。如果您的正则表达式语法支持其他分隔符,您可能会看到类似于
    ~^TE1310~
    的内容

    3:第二组字符的长度正好是8。可以包含数字或字母
    [abc]
    用于选择所提供集合中的字符,使用
    a-zA-Z0-9
    可匹配任何字母(大写或小写)或数字。
    {n}
    用于重复前面的选择器
    n

    4:空间 5:第三组正好包含16个字符。可以是数字或字母 6:空间 7:第四组必须正好
    0013.0002.0000
    \。
    用于转义
    ,它是任何非换行符的选择器。如果要在字符串中构建正则表达式,可能需要对
    \
    字符进行双转义,因此它可能是
    \\.
    而不是
    \.

    8:空间 9:第五集和最后一集包含8个字符。仅数字
    \d
    匹配数字,它相当于
    [0-9]
    。与
    \.
    类似,您可能需要对
    \
    字符进行双转义,该字符将改为
    \\d

    10:字符串结束 您没有明确提到它,但我假设匹配应该只匹配与此模式完全匹配的行,并且后面没有尾随的数字/字母:

    /^TE1310 [a-zA-Z0-9]{8} [a-zA-Z0-9]{16} 0013\.0002\.0000 \d{8}$/
    
    $
    用于匹配字符串的最末端。

    我假设使用类似于JavaScript的正则表达式语法,基本思想可以转换为我所知道的任何其他正则表达式

    1:从TE1310开始
    ^
    仅用于匹配字符串开头的字符,后面的字符按字面匹配

    2:空间 我添加了
    /
    正则表达式分隔符,以表明正则表达式中实际上包含一个空格字符。如果您的正则表达式语法支持其他分隔符,您可能会看到类似于
    ~^TE1310~
    的内容

    3:第二组字符的长度正好是8。可以包含数字或字母
    [abc]
    用于选择所提供集合中的字符,使用
    a-zA-Z0-9
    可匹配任何字母(大写或小写)或数字。
    {n}
    用于重复前面的选择器
    n

    4:空间 5:第三组正好包含16个字符。可以是数字或字母 6:空间 7:第四组必须正好
    0013.0002.0000
    \。
    用于转义
    ,它是任何非换行符的选择器。如果要在字符串中构建正则表达式,可能需要对
    \
    字符进行双转义,因此它可能是
    \\.
    而不是
    \.

    8:空间 9:第五集和最后一集包含8个字符。仅数字
    \d
    匹配数字,它是eq
    /^TE1310 /
    
    /^TE1310 [a-zA-Z0-9]{8}/
    
    /^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} /
    
    /^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}/
    
    /^TE1310 [a-zA-Z0-9]{8} [a-zA-Z0-9]{16} 0013\.0002\.0000 \d{8}$/