我有格式的条形码123456########
。也就是说,前 6 位数字始终相同,后跟 8 位数字。我将如何检查变量是否与该格式匹配?
问问题
5194 次
4 回答
5
123456\d{8}
123456 # Literals
\d # Match a digit
{8} # 8 times
您可以将 更改{8}
为任意位数,具体取决于静态位数之后的位数。
于 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 回答