空格导致正则表达式捕获地址的问题

时间:2016-01-22 17:01:40

标签: javascript regex

我无法创建正则表达式以捕获冰岛家庭地址。

冰岛地址可以有几种格式

  • 地址3
  • 地址3b
  • 添加-RESS
  • add-ress 2453
  • ad dr ess

基本上几乎任何形式的句子,然后是可选的数字和字母。

我提出了以下正则表达式。

^(\D+)\s*?(\d+\w*)?

现在这很有效,除了\ D +贪婪并且总是消耗数字和街道/房屋名称之间的空白。

我尝试了许多不同的量词,并尝试了正面和负面的查找,但没有成功。

我知道在代码中捕获这个空格之后我总是可以修剪地址空白,但是我想知道是否有任何方法可以使用正则表达式正确地执行此操作。

2 个答案:

答案 0 :(得分:1)

而不是"一个或多个非数字" (\D+),你想要"一个或多个非数字,其中最后一个也是非空白",即"零个或多个非数字,加一个非数字-whitespace-非数字" (\D*[^\d\s]):

^(\D*[^\d\s])\s*?(\d+\w*)?

答案 1 :(得分:1)

我只想将分隔空间与可选的数字组分组,但要确保将其从捕获的组中排除。

^(\D+)(?:\s+(\d+\w*))?$