可能会重复:
什么是最终邮政编码和 zip 正则表达式?
我需要一个正则表达式,它可以满足我所有的三个邮政编码条件。例如-
- 12345
- 12345-6789
- 12345 1234
任何指针和建议都将不胜感激。谢谢 !
可能会重复:
什么是最终邮政编码和 zip 正则表达式?
我需要一个正则表达式,它可以满足我所有的三个邮政编码条件。例如-
任何指针和建议都将不胜感激。谢谢 !
^\d{5}(?:[-\s]\d{4})?$
^
= 字符串开始。\d{5}
= 匹配5个数字(适用于条件1、2、3)(?:…)
= 分组[-\s]
= 匹配空格(适用于条件3)或连字符(适用于条件2)\d{4}
= 匹配4个数字(适用于条件2、3)…?
= 它前面的模式是可选的(适用于条件1)$
= 字符串结尾。\s
将匹配任何空白字符,包括制表符和换行符。 - eyelidlessness00544
是一个有效的邮政编码;而544
则不是。 - Keith Thompson/(^\d{5}(?:[\s]?[-\s][\s]?\d{4})?$)/
- Birrel^\d{5}[-\s]?(?:\d{4})?$
^\[0-9]{5}[-\s]?(?:[0-9]{4})?$
^\[0-9]{5}[-\s]?(?:\d{4})?$
^\d{5}[-\s]?(?:[0-9]{4})?$
如果我们在5个数字和4个数字之间或连续的9个数字邮政编码中出现了意外的额外空格,例如:
123451234
12345 1234
12345 1234
^\d{5}([-]|\s*)?(\d{4})?$
jex.im 可视化正则表达式:
const regex = /^\d{5}[-\s]?(?:\d{4})?$/gm;
const str = `12345
12345-6789
12345 1234
123451234
12345 1234
12345 1234
1234512341
123451`;
let m;
while ((m = regex.exec(str)) !== null) {
// This is necessary to avoid infinite loops with zero-width matches
if (m.index === regex.lastIndex) {
regex.lastIndex++;
}
// The result can be accessed through the `m`-variable.
m.forEach((match, groupIndex) => {
console.log(`Found match, group ${groupIndex}: ${match}`);
});
}
^\d{5}(?:[-\s]\d{4})?$
…? = 在条件1中,它前面的模式是可选的
如果您想允许标准的5位数字和+4邮政编码,这是一个很好的例子。
如果您只想匹配美国“Zip + 4”格式的邮政编码(仅满足条件2和3),请删除最后的?
,这样它将始终匹配最后的5个字符组。
我推荐的用于调试正则表达式的有用工具如下链接:
我经常使用这个工具,当我发现正则表达式与我需要的类似,但需要进行一些调整时。它还有一个方便的正则表达式参考菜单和信息界面,让您了解您所做的更改如何影响您输入的示例文本的匹配。
如果我有任何错误或遗漏了重要信息,请纠正我。
\d{5}([ \-]\d{4})?
。 - Mark Amery