我是regex
的初学者。我有字符串cn=foo,ou=bar,ou=zoo,ou=aa,ou=bb,ou=cc,ou=dd,o=someOrg,c=UK
。我需要获取foo,bar and zoo
,所以我使用了以下正则表达式来提取javascript中的字符串。
const dn = 'cn=foo,ou=bar,ou=zoo,ou=aa,ou=bb,ou=cc,ou=dd,o=someOrg,c=UK';
const regex = /^cn=(\w+),ou=(\w+),ou=(\w+)/;
const found = dn.match(regex);
console.log(found) --> Array ["cn=foo,ou=bar,ou=zoo", "foo", "bar", "zoo"]
然后根据新要求将ou=bar
的值更改为ou=bar - 1
。它可以在该字符串值内以任何顺序具有-
或numeric
值。我尝试过使用正则表达式。
const regex = /^cn=(\w+),ou=(.+),ou=(\w+)/;
但是它返回不需要的数据Array ["cn=foo,ou=bar,ou=zoo,ou=aa,ou=bb,ou=cc,ou=dd", "foo", "bar,ou=zoo,ou=aa,ou=bb,ou=cc", "dd"]
我期望的是Array ["cn=foo,ou=bar - 1,ou=zoo", "foo", "bar - 1", "zoo"]
。我试图通过正则表达式中的^(ou=aa|ou=bb|ou=cc|ou=dd|o=someOrg|c=UK)
排除不需要的数据,但得到了null
的值。我希望有人可以帮助我纠正正则表达式语法。
更新:
我尝试过/^cn=(\w+),ou=(\w+\s+-\s+\d+),ou=(\w+)/
,但是上面的示例对此进行了介绍,但没有涉及ou=bar-1
或ou=1bar-
之类的东西。
答案 0 :(得分:0)
解决此问题的简便方法是使其不贪心(注意问号!):
const regex = /^cn=(\w+),ou=(.+?),ou=(\w+)/;
或者,您可能要排除逗号:
const regex = /^cn=(\w+),ou=([^,]+),ou=(\w+)/;