【问题标题】:What punctuation characters are necessary for a city field?城市字段需要哪些标点符号?
【发布时间】:2023-03-26 01:49:01
【问题描述】:

我正在考虑使用正则表达式来限制城市名称中的标点符号(全球)。什么是相当包容的白名单?

我在想:

 (space)
. period
- hyphen
' apostrophe

还想可能是逗号或斜线,但我没有任何例子。还有其他人吗?

【问题讨论】:

  • 我认为这就是所有这些......除了包含特殊字符的城市名称,如:Hōnaunau 或 San Josè 等。但我所知道的大多数城市数据库和网站都不使用任何这些特殊字符,基本上只是去掉这些字符并使用美国字母等效,例如 sa Honaunau 或 San Jose。
  • 在美国,所有城市名称(根据 USPS,我相信是 USCB)都以 ASCII 格式存储在官方数据库中。在世界上,您必须考虑重音折叠。 (也许可以考虑,而不是限制输入,而是去掉不允许的标点符号……但在某些语言中,重音字符确实会影响含义和拼写。)
  • 别忘了 Westward Ho! en.wikipedia.org/wiki/Westward_Ho!
  • “我正在考虑使用正则表达式来限制城市名称中的标点符号(全球)” - 为什么?
  • @User 如果你看不懂它的名字,这个城市不存在或者没有居民?

标签: regex street-address punctuation city


【解决方案1】:

This 是城市名称中最具包容性的标点白名单。当有人在键盘上输入撇号时,可能不会使用 ASCII 撇号代码点。

如果您已经识别了提交文本的编码,您应该能够看到它是否属于标点符号块:

/\p{InGeneral_Punctuation}/

如果您将自己限制为拉丁扩展,请使用以下内容:

/\p{InLatin_Extended-A}/

另外,问问自己:有人在我的城市名称中加上一个有趣的字符会有什么后果?如果我排除太多,这是否比某人无法输入正确地址的后果更糟?

【讨论】:

    【解决方案2】:

    USPS 标准地址格式要求去除所有特殊字符,但主要和/或次要街道地址行中使用的“必要”连字符和破折号以及 ZIP 中的连字符除外。

    所以如果一个地址是:

    John O'Toole
    456 N 4-1/2 St
    San José, CA 99999-4545
    

    邮局喜欢给信封贴标签:

    John O Toole
    456 N 4 1/2 St
    San Jose CA 9999-4545
    

    【讨论】:

      猜你喜欢
      • 2020-02-03
      • 1970-01-01
      • 1970-01-01
      • 2014-05-14
      • 1970-01-01
      • 1970-01-01
      • 2020-05-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多