javascript - 爱尔兰 Eircode 验证

标签 javascript regex street-address

我想知道是否有验证爱尔兰 Eircode 格式的最佳实践。到目前为止,我在 JavaScript 中使用 REGEX 的最佳尝试是基于第 11 页 here 上的官方规范。 .

(第 11 页基于文档中的页码,或第 12 页,如果包括封面)

/^[A,C,D,E,F,H,K,N,P,R,T,V,W,X,Y]{1}[0-9]{1}[0-9,W]{1}[\ \-]?[0-9,A,C,D,E,F,H,K,N,P,R,T,V,W,X,Y]{4}$/

我在这里没有找到任何与 Eircode 相关的问题,所以我想我应该打开这个问题,看看其他人的想法,看看任何人都能想出什么更好/更短/更有效的模式。

编辑:根据@Asunez 的回答删除了逗号。

/^[ACDEFHKNPRTVWXY]{1}[0-9]{1}[0-9W]{1}[\ \-]?[0-9ACDEFHKNPRTVWXY]{4}$/

最佳答案

由于@Manwal 的回答并没有完全按照应有的方式进行,因此我尝试缩短 OP 的正则表达式:

(?:^[AC-FHKNPRTV-Y][0-9]{2}|D6W)[ -]?[0-9AC-FHKNPRTV-Y]{4}$

支持 A65 B2CD 邮政编码的更新版本 - (?:^[AC-FHKNPRTV-Y][0-9]{2}|D6W)[ -]?[0-9AC-FHKNPRTV-Y]{ 4}$

这基本上就是你的正则表达式,有一些变化:

  • 删除了逗号。您不需要逗号来列出 [] 括号内的项目。
  • 尽可能添加范围并节省一些空间(C-FV-Y)。在其他地方添加范围没有好处,因为它不会使正则表达式更短。
  • 您不需要转义空格。正则表达式中的 ""是字面意思。
  • 如果破折号是字符类(方括号)中的最后一个字符,则您也不需要转义破折号
  • 正则表达式的第一部分现在位于非捕获组中,以允许将其与第 3 个位置的唯一可能字母“D6W”大小写进行运算。

也可以只使用后视来处理 D6W,但这比正则表达式更像是一门艺术。

参见正则表达式演示:here

您还可以反转字符类以包含给定字符,虽然它不会使正则表达式更短,但也值得注意。但是,您需要确保不包含其他字符(如点、逗号)。我通过添加 \W token 来实现。

可以试试here

关于javascript - 爱尔兰 Eircode 验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33391412/

相关文章:

Android - 获取包含街道地址的联系人列表,但没有像 Skype 这样地址只有城市和州的低值(value)地址

javascript - 如何将动态值传递给事件监听器

java - 用于获取 include 和 require 指令的正则表达式

javascript - 使用 Javascript 查找和替换 IP 地址

google-maps - 使用自然语言处理从推文中提取地址

python - 生成测试数据 - 如何为给定的美国邮政编码生成有效地址?

javascript - 使用负数和正数对字符串数组进行排序

javascript - jQuery——不是纯 JavaScript

javascript - 将多个动态键名附加到 javascript 对象的简写方法

python - 我可以创建一个包含一些静态文本 "X"后跟递归文本的正则表达式吗?