0

我有这个正则表达式来验证一些事情,不幸的是它不会只验证 PC - 我尝试将 {0,1} 添加到每个时期,但它仍然无法验证。有任何想法吗?

(为了便于阅读,换行符)

/(^|\s)Corporation\.{0,1}(^|$)|
 (^|\s)Corp\.{0,1}(^|$)|
 (^|\s)Inc\.{0,1}(^|$)|
 (^|\s)Incorporated\.{0,1}(^|$)|
 (^|\s)Company\.{0,1}(^|$)|
 (^|\s)(^|$)|
 (^|\s)LTD\.{0,1}(^|$)|
 (^|\s)PLLC\.{0,1}(^|$)|
 (^|\s)P\.{0,1}C\.{0,1}(^|$)/ig;
4

1 回答 1

5

这是您的正则表达式的简化版本:

/(?:^|\s)(?:Corporation|Corp|Inc|Incorporated|Company|LTD|PLLC|P\.C)\.?$/ig;
  • {0,1}可以替换为?
  • 重复可以通过一些分组来消除。
  • 这没有多大意义:(^|$). 您需要在匹配后立即出现行首或行尾。这在功能上与要求匹配位于行尾相同,因此我只是将其替换为$.
  • 当您需要对事物进行分组时,请使用非捕获组(?:...),除非您需要抓住比赛的那部分。他们更有效率。

话虽如此,您的原始模式应该P.C.在行尾匹配。问题可能与您的输入数据或您使用正则表达式的方式有关。

于 2013-03-01T17:03:04.300 回答