当名称包含逗号时,如何编写正则表达式来读取 LDAP 路径中的名称?

How can I write a Regular Expression to read the name in an LDAP path when the name contains a comma?

下面的正则表达式完美运行:

^CN=([a-zA-Z\]+\s+[a-zA-Z\]+)\,.*$

有了这个值:

CN=John Smith,OU=Staff,DC=internal,DC=net

并留给我:

John Smith

如果值在名称中包含逗号,则失败。

CN=John\, Smith,OU=Staff,DC=internal,DC=net

通用名称中的逗号在 LDAP 中使用反斜杠转义 \,因此不会导致路径中断。

我的正则表达式看起来如何,所以我获得 John Smith 甚至 John\, Smith

如果格式始终为 'CN=VAL,OU=VAL...',那么您可以使用“,OU=”作为组捕获的标记。它具有显式的优点,这使其可以自我记录:

/^CN=(.+?),OU=.+$/

var inputs = [
  'CN=John\, Smith,OU=Staff,DC=internal,DC=net',
  'CN=John Smith,OU=Staff,DC=internal,DC=net'
  ];

var regexp = /^CN=(.+?),OU=.+$/;

var matches = inputs.map(function(input) {
  return input.replace(regexp, '');
});

document.write('<pre>' + JSON.stringify(matches, null, 4) + '</pre>');