地址号的最佳javascript正则表达式

地址号的最佳javascript正则表达式,javascript,regex,street-address,Javascript,Regex,Street Address,我有一个所有大写地址名和号码的集合,我只想为每个地址提取第一个遇到的地址号码。以下示例显示了我想从每个示例中提取的内容: 80玫瑰小屋->80 80A玫瑰小屋->80A 80 A玫瑰小屋->80 A 80玫瑰小屋->80意外无空间 [任何其他文本]80玫瑰小屋->80 我在这里和互联网上的其他地方找到了一些类似的问题的答案,但它们总是把地址作为一个整体来处理,而不仅仅是地址名称和号码: 最后一个引用了前瞻,这使我为潜在的单个文本字符后面的任何字母数字字符构造了一个负前瞻。我的JavaScript

我有一个所有大写地址名和号码的集合,我只想为每个地址提取第一个遇到的地址号码。以下示例显示了我想从每个示例中提取的内容:

80玫瑰小屋->80 80A玫瑰小屋->80A 80 A玫瑰小屋->80 A 80玫瑰小屋->80意外无空间 [任何其他文本]80玫瑰小屋->80 我在这里和互联网上的其他地方找到了一些类似的问题的答案,但它们总是把地址作为一个整体来处理,而不仅仅是地址名称和号码:

最后一个引用了前瞻,这使我为潜在的单个文本字符后面的任何字母数字字符构造了一个负前瞻。我的JavaScript正则表达式中有80a。但是,如果不添加可选数字,则仅查找组\d+上面的第四个示例不会仅返回数字

(?:\d+\s*[A-Z]?(?![A-Z0-9]))|(?:\d+))
有没有办法将这两个组组合成一个正则表达式?或者这在JavaScript的正则表达式实现中是不可能的

对此的任何帮助都将不胜感激

(\d+\s*(?:[A-Z](?![A-Z]))?)
你可以试试这个

见演示


真的有那么复杂吗?一个地址通常只有一个号码,必须是您要找的号码。如果后面紧跟着一个字符,如80A,或者后面紧跟着一个空格中的字符,如80A,那么这就是您想要的。/hi,谢谢您的回复。数据集不是完美的,就像我的前两个示例一样,有时数字不在开头,或者数字后面的单词没有单独的空格。如果不使用前瞻性,我发现80R将导致80R,而它应该是80。因此,我目前已经添加了仅限数字的备选组。这是可行的,但我想知道是否有一种方法可以在不使用组的情况下进行组合。您好,我正在尝试将您的建议应用到正则表达式中的第一个组,以便删除第二个组。我似乎做得最好的是:\d+\s*[A-Z]??![A-Z]{2,}除了当示例文本为“80ROSE小屋”时,它似乎从80降到了零之外,这一切都很好。你是不是想用别的方法?我需要的是:[至少一个数字]后跟[任何或无空格]后跟[任何一个没有后跟另一个“A到Z”的“A到Z”]或最后一部分失败,只需原始数字。我希望这是有意义的?@Derek你必须使用。替换函数。替换为“`”。只需使用给定的正则表达式,其他什么都不用。嗨,对不起,我没有意识到情况是这样的。我认为在“a 80 a”上使用此选项进行替换会返回“a 80 a”,而不是“a 80 a”,对吗?@Derek it会返回80 aA@Derek