如何使用正则表达式识别有效的条形码?

时间:2012-06-26 17:51:13

标签: regex

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

4 个答案:

答案 0 :(得分:5)

123456\d{8}

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

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

Regexr will let you try out the regex.

答案 1 :(得分:5)

您尚未指定语言,但正在使用regexp。语法在各实现之间相对统一,因此类似下面的内容应该有效:123456\d{8}

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

根据输入的输入方式,您可能希望锚定正则表达式。正是如此:

^123456\d{8}$

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

\b123456\d{8}\b

\b匹配空字符串但仅在单词的边缘(通常定义为由字母数字字符和下划线组成的序列,但这可能与语言环境有关)。

答案 2 :(得分:3)

123456\d{8}

应该这样做。这分解为:

  • 123456 - 固定位,显然替代了你固定位是什么,记得在这里逃避和正则表达式特殊字符,虽然只有数字你应该没问题
  • \ d - 数字
  • {8} - 必须重复前一个元素的次数,在这种情况下为8。

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

答案 3 :(得分:2)

你描述它的方式,它只是

^123456[0-9]{8}$

...用您的6位已知数字替换123456。我使用的是[0-9]而不是\d,因为我不知道你正在使用什么样的正则表达式,而\d允许某些风格的非阿拉伯数字(如果你担心的话) )。