【问题标题】:Case insensitive UK postcode regex不区分大小写的英国邮政编码正则表达式
【发布时间】:2013-07-01 09:15:23
【问题描述】:

我有以下用于匹配英国邮政编码的正则表达式:

GIR[ ]?0AA|((AB|AL|B|BA|BB|BD|BH|BL|BN|BR|BS|BT|CA|CB|CF|CH|CM|CO|CR|CT |CV|CW|DA|DD|DE|DG|DH|DL|DN|DT|DY|E|EC|EH|EN|EX|FK|FY|G|GL|GY|GU|HA|HD|HG |HP|HR|HS|HU|HX|IG|IM|IP|IV|JE|KA|KT|KW|KY|L|LA|LD|LE|LL|LN|LS|LU|M|ME|MK |ML|N|NE|NG|NN|NP|NR|NW|OL|OX|PA|PE|PH|PL|PO|PR|RG|RH|RM|S|SA|SE|SG|SK|SL |SM|SN|SO|SP|SR|SS|ST|SW|SY|TA|TD|TF|TN|TQ|TR|TS|TW|UB|W|WA|WC|WD|WF|WN|WR |WS|WV|YO|ZE)(\d[\dA-Z]?[ ]?\d[ABD-HJLN-UW-Z]{2}))|BFPO[ ]?\d{1,4} /gi

据我了解,我可以在末尾添加/gi 以使其不区分大小写,但这似乎根本不起作用?有谁知道为什么?

【问题讨论】:

  • 你的正则表达式引擎是什么?根据您使用的是哪一个,使用 /gi 可能不起作用,而在表达式开头使用 (?i) 会使表达式不区分大小写。
  • @Jerry .NET,这个正则表达式被提供给 Asp.net 页面上的 RegularExpressionValidator 控件
  • 您不需要添加g - 只需添加i - 但是当您说“似乎不起作用”时,您是什么意思?
  • @AleksG when you say "doesn't seem to work", what do you mean? 我的意思是当输入小写时它与英国邮政编码不匹配。大写就好了

标签: .net regex validation case-insensitive postal-code


【解决方案1】:

在通过正则表达式之前将您的邮政编码字符串大写。
也看看这个question on UK postcodes

【讨论】:

    【解决方案2】:

    如果您使用的是 .Net,可能在构建时使用 RegexOptions.IgnoreCase?取自here

    该页面还有一个指向this expression 的链接,可能值得一试。

    【讨论】:

    • 我宁愿通过表达式本身来处理这个问题,但同样感谢
    【解决方案3】:

    根据您使用的是哪一个,使用/gi 可能不起作用,而在表达式开头使用(?i) 会使表达式不区分大小写。

    所以,你会使用:

    (?i)GIR[ ]?0AA|((AB|AL|B|BA|BB|BD|BH|BL|BN|BR|BS|BT|CA|CB|CF|CH|CM|CO|CR|CT|CV|CW|DA|DD|DE|DG|DH|DL|DN|DT|DY|E|EC|EH|EN|EX|FK|FY|G|GL|GY|GU|HA|HD|HG|HP|HR|HS|HU|HX|IG|IM|IP|IV|JE|KA|KT|KW|KY|L|LA|LD|LE|LL|LN|LS|LU|M|ME|MK|ML|N|NE|NG|NN|NP|NR|NW|OL|OX|PA|PE|PH|PL|PO|PR|RG|RH|RM|S|SA|SE|SG|SK|SL|SM|SN|SO|SP|SR|SS|ST|SW|SY|TA|TD|TF|TN|TQ|TR|TS|TW|UB|W|WA|WC|WD|WF|WN|WR|WS|WV|YO|ZE)(\d[\dA-Z]?[ ]?\d[ABD-HJLN-UW-Z]{2}))|BFPO[ ]?\d{1,4}
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多