代码之家  ›  专栏  ›  技术社区  ›  Xaisoft

以下字符串的正则表达式是什么?如果数字翻转,表达式是否会更改?

  •  1
  • Xaisoft  · 技术社区  · 14 年前

    56AAA71064D6

    56AAA7105A25

    如果数字翻过来,正则表达式会改变吗?我的意思是,上面的数字碰巧包含十六进制值,我不知道这个值是如何变化的,它达到F。以第一个为例: 56AAA71064D6 ,如果这个上升到 56AAA71064F6 接下来的一个会变成 56AAA7106406

    制造商将输入一系列序列号。问题是不同的制造商有不同的序列号格式(有些只是数字,有些是字母数字,有些包含破折号之类的额外字符,有些包含十六进制值,这使它变得更困难,因为我不知道如何滚动到下一个序列号)。翻滚问题是最大的问题,因为序列号是以5A1B-6F12这样的范围输入的,在我看来,在数据库中存储序列号并不是那么容易。我本来可以让用户选择输入模式(表达式)并将其存储在数据库中,但是如果一个或多个字符从一个数字变为一个字母,或者相反,那么正则表达式对某些序列号不再有效。

    另外,上面的例子我只举了一个例子。有许多序列号包含不同的表达式。

    6 回复  |  直到 14 年前
        1
  •  2
  •   Keng    14 年前

    我想你可以用这种方式写12个字符。这将搜索一个12个字符的短语,其中每个字符必须是大写(a、B、C、D、E、F、1、2、3、4、5、6、7、8、9或0)

    [A-F0-9]{12}

    如果你想包括破折号的可能性,那么就这样做。

    [A-F0-9\-]{12}

    或者你想包括破折号的可能性 然后角色们做这个。不过,这将挑选出任何符合标准的12-15个字符的项目。

    [A-F0-9\-]{12,15}

    或者如果它被空间包围(AAAAHHHh…我的空间也被剥离!!!)

    [A-F0-9-]{12}

    或者它被标签包围

    \t[A-F0-9\-]{12}\t

        2
  •  4
  •   Jon Skeet    14 年前

    没有一个正则表达式是与这两个字符串匹配的“the”表达式。相反,有无限多的人会这样做。在频谱的两端有两个选项:

    (56AAA71064D6)|(56AAA7105A25)
    
    .*
    

    第一遗嘱 只有 把那两条线配起来。第二个会匹配 任何东西 . 两者都符合你给出的所有标准。

    更多 那个 将驱动其他问题的答案。(目前,唯一有意义的答案是“这取决于您使用的正则表达式。”)

        3
  •  1
  •   Toto    14 年前

    这与包含12个十六进制的字符串相匹配

    [0-9A-F]{12}
    
        4
  •  1
  •   Platinum Azure    14 年前

    [0-9A-Fa-f]{12}
    

    在这里,我使用一个字符类来表示我想要任何数字,或者a-F,或者a-F。作为奖励,我允许使用小写字母;如果你不想要这些,只需要把它们从regex中去掉。

    正如Jon Skeet和其他人所说,你确实没有提供足够的信息,所以如果你不喜欢这个答案,请理解我正在尽我所能提供你所提供的信息。

        5
  •  1
  •   Nimantha Thatkookooguy    5 年前

    [0-9A-F]{12}
    
        6
  •  0
  •   Nimantha Thatkookooguy    5 年前

    听起来你在描述一个12位的十六进制数:

    ^[A-F0-9]{12}$