当名称包含逗号时,如何编写正则表达式来读取 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>');
下面的正则表达式完美运行:
^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>');