Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 每个州邮政编码的正则表达式验证_Regex - Fatal编程技术网

Regex 每个州邮政编码的正则表达式验证

Regex 每个州邮政编码的正则表达式验证,regex,Regex,我对正则表达式还很陌生,试图编写一个正则表达式来匹配每个州的邮政编码,但这很困难。例如,阿拉斯加的邮政编码介于99501和99950之间,但这不起作用: 99(5|6|7|8|9)(0|1|2|3|4|5|6|7|8|9)(0|1|2|3|4|5|6|7|8|9) 因为它也匹配99951。有人已经这样做了,或者介意至少帮我弄个模式吗?以下是每个州的邮政编码范围: 对于这个问题,regexp是一个糟糕的选择,但我认为这一个可能会完成任务: 99(5(0[1-9]|[1-9]\d)|[6-8]\d

我对正则表达式还很陌生,试图编写一个正则表达式来匹配每个州的邮政编码,但这很困难。例如,阿拉斯加的邮政编码介于99501和99950之间,但这不起作用:

99(5|6|7|8|9)(0|1|2|3|4|5|6|7|8|9)(0|1|2|3|4|5|6|7|8|9)
因为它也匹配99951。有人已经这样做了,或者介意至少帮我弄个模式吗?以下是每个州的邮政编码范围:
对于这个问题,regexp是一个糟糕的选择,但我认为这一个可能会完成任务:

99(5(0[1-9]|[1-9]\d)|[6-8]\d\d|9([0-4]\d|50))

duplicate:我对regexp的理解还不够好,无法给您一个答案,但听起来您可以使用lookahead来解决您的问题。写下你所需要的那么多,无疑是一个巨大的痛苦。您可能会更幸运地找到一个api来验证zipcodes。@MikeN:api。。或者一个简单的数值比较。可能重复@Brian:你也可以测试你的正则表达式。我使用这个网站来优化正则表达式并防止不必要的匹配。它们还提供了最重要关键字的(简短)摘要(例如.\d以匹配任何数字)