正则表达式替换以获取合法名称

regular expression replace to get legal name

我有他们的学历名单,我需要清理并删除他们的学历。下面列出了一些示例。

  1. 伯曼,PMP,CSM
  2. Adesanya,工商管理硕士
  3. 布拉格罗夫-曼德利,无国界医生
  4. 鲍德温,M.A。 |工商管理硕士
  5. Akwaboah-CEH、CASP、CAP、CCSK、SCM、VmWare。
  6. Arif (CCIE SP)
  7. 一个。护盾、BB、PMP
  8. 朱少,CFA

我需要输出像

我需要一个没有资格的有效法定名称。我试过 preg_replace。下面是我的代码

preg_replace('/[^A-Za-z\. -]/i',' ',$result->last_name);

您可以使用

'~(?:-\p{Lu}+\b|\s*\([^()]*\)|[,|][^,|]+)+$~'

参见regex demo。您可以在最后一个 ~ 定界符后添加 u 修饰符以支持 Unicode 字符串。

详情

  • (?:-\p{Lu}+\b|\s*\([^()]*\)|[,|][^,|]+)+ - 一次或多次连续重复:
    • -\p{Lu}+\b| - 1+ 个大写字母作为一个单词,或者
    • \s*\([^()]*\)| - 0+ 个空格后跟 (,除 () 以外的任何 0+ 个字符,然后是 ),或
    • [,|][^,|]+ - ,| 后跟 ,|
    • 以外的 1+ 个字符
  • $ - 字符串锚结束。