regex 重构正则表达式以进行地址验证

4urapxun  于 2023-01-14  发布在  其他
关注(0)|答案(2)|浏览(102)

我有以下正则表达式在我的角应用程序的邮政地址验证。
const regx = '\\b([p]*(ost)*\\.*\\s*[o|0]*(ffice)*\\.*\\s*b[o|0]x)\\b'
我只想让这个正则表达式

    • 匹配列表:**
  1. P.O.Box
    1.波博克斯
    1.邮政信箱
    1.邮政信箱街1234号
  2. 123邮政信箱
    但也符合
    • 不匹配列表:**

1.盒

  1. Package 盒
    1.贫民窟
    等等,
    我怎样才能收紧这个正则表达式,使它不匹配"不匹配列表"?另外,我想我的正则表达式是像邮政信箱或邮政信箱等东西升级。任何输入?
yqkkidmi

yqkkidmi1#

使用你展示的例子,请尝试下面的正则表达式。这里是使用正则表达式的Online Demo

^(?:[0-9]*\s*[pP](?:\.O\.|o)(?:st(?:al)?\soffice\s)*[bB]ox(?:\sstreet)?)$

***说明:***添加上述正则表达式的详细说明。

^(?:                 ##Starting 1 non-capturing group from starting of the value.
  [0-9]*\s*          ##Matching 0 or more digits followed by 0 or more spaces.
  [pP]               ##Matching p OR P here.
  (?:\.O\.|o)        ##In a non-capturing group matching .O. OR o here.
  (?:st(?:al)?\soffice\s)*  ##In a non-capturing group matching st followed by spaces followed by office followed by spaces and keeping this non-capturing group Optional.
  [bB]ox             ##Matching b OR B followed by ox here.
  (?:\sstreet)?      ##In a non-capturing group matching space street and keep this optional.
)$                   ##Closing non-capturing group at the end of the value here.
1qczuiv0

1qczuiv02#

下面是另一个适合您的变体:

/^(?:\d+\s*)?p\.?o\.?(?:st(?:al)?)?(?:\s+office)?\s*b(?:ox|in)\b.*/gmi

RegEx Demo
因为我们在这里使用忽略大小写修饰符,所以我们可以在正则表达式中使用所有小写字母。

相关问题