首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >DN地址的正则表达式

DN地址的正则表达式
EN

Stack Overflow用户
提问于 2011-02-23 09:31:28
回答 2查看 395关注 0票数 1

如何用javascript编写必须遵循以下条件的正则表达式

DN地址中的所有段都应遵循cn=<name>,ou=<name>,o=<bic8>,o=swift

  • All段的顺序,段应与,分隔。
  1. DN地址最多应该有100个字符。
  2. 不允许使用任何空间。在DN地址中允许至少2段和最多10段的
  3. <name>部件必须包含至少2个字符和最多20个字母数字字符。字符应该是小写的。只允许使用一个特殊字符,即-(Hypen)。
  4. DN地址最多有2个号码。<name>部件最多可以包含2个数字。

提前感谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-02-23 10:01:42

未经测试的代码如下,不要怪我,如果它炸毁了你的电脑:

代码语言:javascript
运行
复制
var parseDn(str)
  var m = /^cn=(.*?),ou=(.*?),o=(.*?),o=swift$/.exec(str);
  if (!m) { return null; } // (a) and (b).
  if (s.length > 100) { return null; } // (c).
  if (/\s/.exec(s)) { return null; } // (d).
  var x = {cn:m[1], ou:m[2], o:m[3]};
  var isValidName = function(s) { return (/^[a-z-]{2,20}$/).exec(s); }
  if (!isValidName(x.cn) || !isValidName(x.ou) || !isValidName(x.o)) {
    return null; // (f).
  }
  var countNumbers = function(s) { return s.replace(/\D/g, "").length; }
  if (countNumbers(x.cn)>2 || countNumbers(x.ou)>2 || countNumbers(x.o)>2) {
    return null; // (g).
  }
  return x; // => {"cn":"name", "ou":"name", "o":"bic8"}
}

请注意,(e)和一些与“段”有关的要点是完全不加检查的,因为描述是模糊的。但这会让你开始..。

票数 0
EN

Stack Overflow用户

发布于 2011-02-23 09:38:36

我认为在这种情况下使用.split()要容易得多。

首先在,上拆分整个字符串,然后在=上拆分结果数组的每个单独段。

特别是在这样一个定义良好的规范上,split就足够处理它了。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5089060

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档