正则表达式验证公司名称

ff0*_*0e2 0 regex

我有这个RegEx来验证一些东西,不幸的是它不会验证PC只有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;
Run Code Online (Sandbox Code Playgroud)

小智 5

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

/(?:^|\s)(?:Corporation|Corp|Inc|Incorporated|Company|LTD|PLLC|P\.C)\.?$/ig;
Run Code Online (Sandbox Code Playgroud)
  • {0,1} 可以替换为 ?
  • 通过一些分组可以消除重复.
  • 这没有多大意义:(^|$).您需要在匹配后立即开始一行或一行结束.这在功能上与要求匹配在行的末尾相同,所以我只是将其替换为$.
  • 当您需要对事物进行分组时,请使用非捕获组,(?:...)除非您需要抓取该部分匹配项.它们更有效率.

总而言之,你的原始模式应该P.C.在一行的末尾匹配.问题可能与您的输入数据或您使用正则表达式的方式有关.

  • 您应该切换`Inc`和`Incorporated`,以便它不会太早匹配.否则,+1. (2认同)