Regex 城市和街道名称的正则表达式

Regex 城市和街道名称的正则表达式,regex,validation,expression,Regex,Validation,Expression,您好,我正在寻找2个正则表达式,其中描述: 1) 街道的有效名称 2) 城市的有效名称 有效街道名称为: 主干街 主干街 大街 新主干大街大酒店 梅斯特里特新酒店 梅森大街 圣亚历山大街 美国广播公司 约翰肯尼迪街 无效街道名称为: 主干道#+;:_*``?=)(/&%$§ 主干街道#+;:*'`?=)(/&%$§ 主干街2号 主干街 主干街§ 有效城市为: 爱丁 柏林 圣彼得堡 新柏林 巴德施勒马酒店 法兰克福美因酒店 纽伦堡 Ab 纽约市 无效城市为: 爱丁堡123 爱丁堡12

您好,我正在寻找2个正则表达式,其中描述:

1) 街道的有效名称

2) 城市的有效名称

有效街道名称为:

  • 主干街
  • 主干街
  • 大街
  • 新主干大街大酒店
  • 梅斯特里特新酒店
  • 梅森大街
  • 圣亚历山大街
  • 美国广播公司
  • 约翰肯尼迪街
无效街道名称为:

  • 主干道#+;:_*``?=)(/&%$§
  • 主干街道#+;:*'`?=)(/&%$§
  • 主干街2号
  • 主干街
  • 主干街§
有效城市为:

  • 爱丁
  • 柏林
  • 圣彼得堡
  • 新柏林
  • 巴德施勒马酒店
  • 法兰克福美因酒店
  • 纽伦堡
  • Ab
  • 纽约市
无效城市为:

  • 爱丁堡123
  • 爱丁堡123
  • 圣安德鲁斯12
  • 柏林,#+;:*'`?=)(/&%$§
  • 柏林__
我目前的解决方案非常接近,但并不完美:

城市和街道名称:

^[^\W\d_]+(?:[-\s][^\W\d_]+)*[.]?$
不幸的是,没有与这些示例相匹配的(其余的很好):

  • 圣亚历山大街
  • 圣彼得堡

如果您有更简单的解决方案,我很高兴了解一些新内容:-)

要使其与
圣亚历山大街
圣彼得堡
匹配,您只需在字母匹配模式后添加一个可选点:

^[^\W\d_]+\.?(?:[-\s][^\W\d_]+\.?)*$
#         ^^^                 ^^^

此外,在正则表达式中添加一个撇号也是有意义的:

^[^\W\d_]+\.?(?:[-\s'’][^\W\d_]+\.?)*$

请参阅。

这听起来是个非常糟糕的主意。永远不要低估人们给事物起的各种各样的名字——例如,带有数字的街道名称实际上相当普遍。(以该书命名)将有一个排除“!”的问题。准备好继续使用
Frankfurt(Main)
Heide(Holst)
,就像火车公司用来区分城市一样。此外,您似乎并不期望
resund
МСаа
εσσαλονίκη
İstanbul
東京。街道和门牌号有时还不够:可能需要添加像
Hof 5
Eingang 3
这样的加号来进一步区分。这一点很好!如何添加
法兰克福(主要)
?事实上,我只是从德国挖出了一些名字。为了确定,我加入了一些异国情调的角色。然而,如果有一个简单的方法来添加所有这些字符,这将是great@PParker在某种程度上,你必须更清楚地定义你试图阻止的事情。通过尝试将每个可能的名字都列入白名单,你期望得到什么?我能做些什么来匹配
Frankfurt(Main)
。@PParker
^(?[^\W\d\u]+\.?)(?:[-\s]\(?[^\W\d\u]+\.?)*$
希望最后一个问题:你对匹配
Frankfurt(Main)
的建议有效,但它也匹配
纽约)
,哪个是错的