用于未定义位置只有一个空格的数字的正则表达式



我正试图编写一个正则表达式来验证未定义位置只有一个空格的数字?

最多12个字符带一个空格或最多11个字符不带空格。

例如:'25897 569874','5674','65783987665','435 6523'

我试过使用^[0-9]{0,12}$。这并不完美,因为我不知道如何放置空格及其计数。

您可以使用以下正则表达式:

^(?:d{1,11}|(?=d+ d+$)[d ]{3,12})$

d{1,11}将在没有空格的情况下从1到11位匹配。

(?=d+ d+$)[d ]{3,12}将匹配多达11位数字,在中间某处有一个空格。空格不能是前导或尾随,因此' 23'将被拒绝。

  • (?=d+ d+$)是一个前瞻,它匹配一个或多个数字,然后是一个空格,然后一个或更多数字,然后锚定字符串的末尾。它保证只出现一个空格,并且该空格不会是前导或尾随空格。展望还隐含地确认字符串中至少有3个字符
  • [d ]{3,12}将保证字符串只包含数字或空格,并且最多包含12个数字或空格。重复次数的下限可以设置为3或更低,因为它已经被前瞻性所暗示

这两个约束共同保证文本包含1到11位数字,以及数字之间任意位置的可选空格。


允许前导空格,但拒绝单个空格、空字符串和尾部空格:

^(?:d{1,11}|(?=d* d+$)[d ]{2,12})$

同样,前瞻意味着至少有2个字符,因此重复次数可以设置为2或更低。

^[0-9]{0,12}$将匹配最多12个字符的带空格或不带空格的字符串如果您需要多个标准,try OR运算符(管道):|

^[0-9]{0,12}$|另一个条件

最新更新