地址中城市名称前加逗号的正则表达式



address通常带有逗号分隔符,可以使用简单的正则表达式进行分割。如

123 Main St, Los Angeles, CA, 90210

我们可以在这里应用正则表达式,并使用逗号分割。但在我的数据库地址存储没有逗号。如

A Better Property Management<br/> 6621 E PACIFIC COAST HWY<br/> STE 255<br/> LONG BEACH CA 90803-4241 

我想在城市前面加逗号。像这样:

A Better Property Management<br/> 6621 E PACIFIC COAST HWY<br/> STE 255<br/> LONG BEACH ,CA 90803-4241

我想从末尾找到最后两个字母的单词,然后用正则表达式放逗号。但我也需要考虑到我们没有完整地址或丢失城市和pin码的情况。有没有办法做到这一点。我只找到了可以用逗号分开的解决方案,而不是相反。

我在想我们是否可以选择数字前的最后两个单词,比如[A-Za-z]{2}(不知道这是否正确)。同时,如果我们可以检查只有当字符串以数字结尾时才会这样做。

我试着

(b(AL|AK|AS|AZ|AR|CA|CO|CT|DE|DC|FM|FL|GA|GU|HI|ID|IL|IN|IA|KS|KY|LA|ME|MH|MD|MA|MI|MN|MS|MO|MT|NE|NV|NH|NJ|NM|NY|NC|ND|MP|OH|OK|OR|PW|PA|PR|RI|SC|SD|TN|TX|UT|VT|VI|VA|WA|WV|WI|WY|Alabama|Alaska|Arizona|Arkansas|California|Colorado|Connecticut|Delaware|District of Columbia|Florida|Georgia|Hawaii|Idaho|Illinois|Indiana|Iowa|Kansas|Kentucky|Louisiana|Maine|Maryland|Massachusetts|Michigan|Minnesota|Mississippi|Missouri|Montana|Nebraska|Nevada|New Hampshire|New Jersey|New Mexico|New York|North Carolina|North Dakota|Ohio|Oklahoma|Oregon|Pennsylvania|Rhode Island|South Carolina|South Dakota|Tennessee|Texas|Utah|Vermont|Virginia|Washington|West Virginia|Wisconsin|Wyoming)b)
https://regex101.com/r/75fqO6/1

可以使用

[a-zA-Z]+s+d(?:[d-]*d)?$

替换为,$0。参见regex演示。细节:

  • [a-zA-Z]+-一个或多个字母
  • s+-一个或多个空白
  • d-一个数字
  • (?:[d-]*d)?-由0个或多个数字/连字符和一个数字组成的可选子字符串
  • $-字符串结束

替换中的$0是对整个匹配值的反向引用,所有通过regex匹配的文本都被放回到找到它的地方,并使用前置逗号。

最新更新