我是Regex的新手。我必须创建一个正则表达式来验证邮政编码。我有一个正则表达式:^[a-zA-Z0-9]+([ ][a-zA-Z0-9]+)?$
。这个正则表达式接受所有字母和数字以及字符之间的一个空格。这个正则表达式部分适用于我,但我需要另外检查这个,以便我可以将字符长度限制为6.
我从How to match a single Space得到了这个正则表达式。现在我想限制这个正则表达式的字符长度。就像是
^[a-zA-Z0-9]+([ ][a-zA-Z0-9]+)?{6}$
这会将长度限制为六(6)
我尝试了很多方法但失败了。我没有太多时间深入研究正则表达式的细节。任何人都可以为我提供解决方案。
答案 0 :(得分:4)
您可以在正则表达式前面使用零宽度正面预测 (?=X)
,如下所示:
^(?=.{0,6}$)[a-zA-Z0-9]+([ ][a-zA-Z0-9]+)?$
请注意,X{6}
表示完全 6次X
。要指定最大长度,上述正则表达式使用带有X{min,max}
点的X
表单。我们还在前瞻的末尾包含$
,从而指定在前6个字符后不允许进一步的内容。正则表达式的其余部分指定哪些字符可以按什么顺序出现。 (那部分我没有改变。)
你可以在这里找到一个有用的正则表达式备忘单:
https://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html
这里有一个关于外观表达的深入解释:
http://www.regular-expressions.info/lookaround.html
答案 1 :(得分:1)
听起来您希望在印度验证6位数的邮政编码。如果是这样,规则还要求第一个字符不是零。
^[1-9][0-9]{5}$
如果您希望匹配的邮政编码看起来像包含A-Z或带有空格后跟6个字符的数字字符,那么您可以使用。
^[a-zA-Z0-9]+ [a-zA-Z0-9]{6}$