2

我有格式的条形码123456########。也就是说,前 6 位数字始终相同,后跟 8 位数字。我将如何检查变量是否与该格式匹配?

4

4 回答 4

5

123456\d{8}

123456  # Literals
\d      # Match a digit
  {8}   # 8 times

您可以将 更改{8}为任意位数,具体取决于静态位数之后的位数。

Regexr 将让您试用正则表达式。

于 2012-06-26T17:53:55.560 回答
5

您没有指定语言,而是指定了正则表达式。语法在实现中是相对统一的,所以应该像下面这样工作:123456\d{8}

  • \d表示数字字符,通常等同于 set [0-9]
  • {8}表示前面的字符集精确重复八次。

根据输入的输入方式,您可能需要锚定正则表达式。因此:

^123456\d{8}$

where^匹配行或字符串的开头并$匹配结尾。或者,您可能希望使用单词边界,以确保您的条形码字符串正确分隔:

\b123456\d{8}\b

where\b匹配空字符串,但仅在单词的边缘(通常定义为仅由字母数字字符和下划线组成的序列,但这可能取决于区域设置)。

于 2012-06-26T17:54:42.283 回答
3
123456\d{8}

应该这样做。这分解为:

  • 123456 - 固定位,显然用这个代替你的固定位,记住在这里转义和正则表达式特殊字符,虽然只有数字你应该没问题
  • \d - 一个数字
  • {8} - 前一个元素必须重复的次数,在本例中为 8。

{8}如果您在该范围内有最小或最大数字,则可以取 2 位数字,因此如果前一个元素必须重复 6 到 8 次,您可以这样做{6,8}

于 2012-06-26T17:54:12.890 回答
2

你描述它的方式,它只是

^123456[0-9]{8}$

...您将替换123456为 6 个已知数字。我使用[0-9]而不是\d因为我不知道您使用的是什么风格的正则表达式,并且\d允许某些风格的非阿拉伯数字(如果这与您有关)。

于 2012-06-26T17:54:45.340 回答