构建用于地址验证的正则表达式

时间:2018-02-06 06:53:47

标签: regex bash

我正在尝试构建满足这些要求的正则表达式

号码街道名称

数字 - 至少一位数字,后跟任意数量的附加数字 街道名称 - 任意数量的单词(至少一个),每个单词以大写字母或数字开头,后跟任意数量的大小写字母,数字或句点(。)。

有效字符串的示例是

“123 Milk Ln。”

“15090 178th Ave”

“27 Hilltop Dr. Apt.7”

无效字符串的示例是

“F52 Milk Ln。”

“156A Fantastic St。”

“56样本Ln。”

“1838 Dykhouse Ave.”

                 ^ extra space on the end

“1832 7th st。”

任何有关正则表达式的帮助都将受到赞赏

  

我尝试了以下内容:

[A-Z][a-z]+,\s[A-Z][a-z]+[^\s](\s[A-Z].)

2 个答案:

答案 0 :(得分:1)

您可以尝试:

^\d\d*(\s(?:[A-Z0-9][A-Za-z0-9.]*)){1,}$

说明:

  1. ^行首
  2. \ d \ d *一位数后跟可选的零位或多位数
  3. \s(?:[A-Z0-9][A-Za-z0-9.]*)表示空格,后跟大写字母 或编号至少一个,然后是A-Za-z0-9。零次或多次(*) 上述序列必须发生1次或多次{1,}
  4. $ end of string
  5. Regex 101 Demo

答案 1 :(得分:0)

\d+
  • [\dA-Z] - 一个或多个数字
  • (?: * - 数字或大写字母
  • [\da-zA-Z.] - 非捕获组,零个或多个空格
  • )+ - 数字,大写字母或小写字母
  • beaconManager.getBeaconParsers().add(new BeaconParser(). setBeaconLayout("m:0-3=4c000215,i:4-19,i:20-21,i:22-23,p:24-24")); - 非捕获组的结束。该组应出现1次或更多次

Demo