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

时间:2018-02-28 10:00:39

标签: php preg-replace

我有他们的教育资格名单,我需要清理和取消他们的教育资格。下面是一些列举的例子。

  1. Berman,PMP,CSM
  2. Adesanya,MBA
  3. Blagrove-Mandley,MSF
  4. Baldwin,M.A。| MBA
  5. Akwaboah-CEH,CASP,CAP,CCSK,SCM,VMware等。
  6. Arif(CCIE SP)
  7. 甲。 Shields,BB,PMP
  8. Young chu,CFA
  9. 我需要输出像

    • 贝尔曼
    • Adesanya
    • Blagrove-Mandley
    • 鲍德温
    • Akwaboah
    • 阿里夫
    • 甲。屏蔽
    • Young chu

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

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

1 个答案:

答案 0 :(得分:1)

您可以使用

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

请参阅regex demo。您可以在最后一个u分隔符后添加~修饰符以支持Unicode字符串。

<强>详情

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