DN 的 JavaScript 正则表达式

2023-11-25

我想要一个正则表达式来验证所有类型的可能 DN

我创建了一个,但效果不太好。

/([A-z0-9=]{1}[A-z0-9]{1})*[,??]/ and 其他一些改变它,但徒劳无功。

可能的 DN 可以是

CN=abcd,CN=abcd,O=abcd,C=us
CN=abcd0520,CN=users,O=abcd,C=us
C=us

etc

我最近需要这个,所以我创建了一个完全遵循 LDAPv3 可分辨名称语法的一个:RFC-2253.

属性类型

attributeType 可以用两种方式表示。以 alpha 开头的字母数字字符串,使用以下方法进行验证:

[A-Za-z][\w-]*

或者它可以是一个 OID,使用以下方法进行验证:

\d+(?:\.\d+)*

因此 attributeType 验证使用:

[A-Za-z][\w-]*|\d+(?:\.\d+)*

属性值

attributeValue 可以用 3 种方式表示。十六进制字符串,它是带有前导的十六进制对序列#。十六进制字符串使用以下方式进行验证:

#(?:[\dA-Fa-f]{2})+

或者转义字符串;每个非特殊字符均按“原样”表示(使用[^,=\+<>#;\\"])。特殊字符可以用前导来表示\(验证使用\\[,=\+<>#;\\"])。最后,任何字符都可以表示为带有前导的十六进制对\(验证使用\\[\dA-Fa-f]{2})。转义字符串使用以下方法进行验证:

(?:[^,=\+<>#;\\"]|\\[,=\+<>#;\\"]|\\[\dA-Fa-f]{2})*

或带引号的字符串;该值的开头和结尾为",并且可以包含任何转义字符,除了\ and "。此外,可以使用上面转义字符串中的任何方法。带引号的字符串使用以下方式进行验证:

"(?:[^\\"]|\\[,=\+<>#;\\"]|\\[\dA-Fa-f]{2})*"

所有组合起来, attributeValue 使用以下方式进行验证:

#(?:[\dA-Fa-f]{2})+|(?:[^,=\+<>#;\\"]|\\[,=\+<>#;\\"]|\\[\dA-Fa-f]{2})*|"(?:[^\\"]|\\[,=\+<>#;\\"]|\\[\dA-Fa-f]{2})*"

名称组成部分

BNF 中的名称组件是:

name-component = attributeTypeAndValue *("+" attributeTypeAndValue)
attributeTypeAndValue = attributeType "=" attributeValue

在正则表达式中是:

(?#attributeType)=(?#attributeValue)(?:\+(?#attributeType)=(?#attributeValue))*

更换(?#attributeType) and (?#attributeValue)具有上述值的占位符为我们提供:

(?:[A-Za-z][\w-]*|\d+(?:\.\d+)*)=(?:#(?:[\dA-Fa-f]{2})+|(?:[^,=\+<>#;\\"]|\\[,=\+<>#;\\"]|\\[\dA-Fa-f]{2})*|"(?:[^\\"]|\\[,=\+<>#;\\"]|\\[\dA-Fa-f]{2})*")(?:\+(?:[A-Za-z][\w-]*|\d+(?:\.\d+)*)=(?:#(?:[\dA-Fa-f]{2})+|(?:[^,=\+<>#;\\"]|\\[,=\+<>#;\\"]|\\[\dA-Fa-f]{2})*|"(?:[^\\"]|\\[,=\+<>#;\\"]|\\[\dA-Fa-f]{2})*"))*

它验证单个名称组件。

专有名称

最后,专有名称的 BNF 为:

name-component *("," name-component)

在正则表达式中是:

(?#name-component)(?:,(?#name-component))*

将 (?#name-component) 占位符替换为上面的值可以得到:

^(?:[A-Za-z][\w-]*|\d+(?:\.\d+)*)=(?:#(?:[\dA-Fa-f]{2})+|(?:[^,=\+<>#;\\"]|\\[,=\+<>#;\\"]|\\[\dA-Fa-f]{2})*|"(?:[^\\"]|\\[,=\+<>#;\\"]|\\[\dA-Fa-f]{2})*")(?:\+(?:[A-Za-z][\w-]*|\d+(?:\.\d+)*)=(?:#(?:[\dA-Fa-f]{2})+|(?:[^,=\+<>#;\\"]|\\[,=\+<>#;\\"]|\\[\dA-Fa-f]{2})*|"(?:[^\\"]|\\[,=\+<>#;\\"]|\\[\dA-Fa-f]{2})*"))*(?:,(?:[A-Za-z][\w-]*|\d+(?:\.\d+)*)=(?:#(?:[\dA-Fa-f]{2})+|(?:[^,=\+<>#;\\"]|\\[,=\+<>#;\\"]|\\[\dA-Fa-f]{2})*|"(?:[^\\"]|\\[,=\+<>#;\\"]|\\[\dA-Fa-f]{2})*")(?:\+(?:[A-Za-z][\w-]*|\d+(?:\.\d+)*)=(?:#(?:[\dA-Fa-f]{2})+|(?:[^,=\+<>#;\\"]|\\[,=\+<>#;\\"]|\\[\dA-Fa-f]{2})*|"(?:[^\\"]|\\[,=\+<>#;\\"]|\\[\dA-Fa-f]{2})*"))*)*$

在这里测试一下

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

DN 的 JavaScript 正则表达式 的相关文章

  • 从 php 到 JavaScript 的数组

    我正在尝试使用 json 将数组列表从 php 传输到 javascript 但它不起作用 JS ajax url getProfilePhotos php type post post or get method data if you
  • 我可以动态创建/销毁 Vue 组件吗?

    因此 我正在创建一个相当复杂的 Vue 应用程序 它从后端 API 获取数据并将其显示在前端 具体取决于用户选择的过滤器 它的默认设置是立即显示所有内容 然后一旦用户选择过滤器 它就会拉出不具有这些属性的 卡片 组件 直到今天 一切都很顺利
  • 如何强制折断不可折断的字符串?

    我有一个根据数据库中包含的数据生成的 HTML 页面 数据库有时包含浏览器无法分解的长字符串 因为这些字符串不包含可分解的字符 空格 点 逗号等 有没有办法使用 html css 甚至 javascript 来解决这个问题 看到这个link
  • 使用命名的成功/错误回调在 AngularJS 中声明一个 Promise

    我正在尝试做一些与 http 服务非常相似的事情 根据我的理解 http 返回一个 Promise 对象 使用它时 语法是 http success function data success callback error function
  • Angularjs 完整日历不显示事件

    我正在用那个https github com angular ui ui calendar https github com angular ui ui calendar在 Angularjs 中使用 FullCalendar 它显示日历并
  • html canvas动画卡顿

    谁能解释为什么提供的画布动画断断续续 我创建了一个测试存根来演示该问题 我在桌面上的 FF Chrome IE 以及 Android 上的 FF 和 Chrome 中看到了卡顿现象 口吃是由于垃圾收集造成的吗 似乎 raf 在每次调用时都会
  • java中删除字符串中的特殊字符?

    如何删除字符串中除 之外的特殊字符 现在我用 replaceAll w s 它删除了所有特殊字符 但我想保留 谁能告诉我我该怎么办 Use replaceAll w s 我所做的是将下划线和连字符添加到正则表达式中 我添加了一个 连字符之前
  • 窗口大小调整触发的 DOM 事件

    我有一个布局相当复杂的页面 最初打开页面时 某些元素的对齐存在问题 但是 可以通过更改浏览器窗口的大小来 永久 解决此问题 显然 我不希望用户必须调整浏览器窗口的大小才能使页面正确显示 所以我想知道是否有一种方法可以在页面首次加载时以编程方
  • 使用正则表达式搜索 Ruby 数组

    你好 我有一个小的 ruby 函数 它可以分割出一个 Ruby 数组 如下所示 def rearrange arr from to sidx arr index from eidx arr index to arr sidx arr sid
  • 如何知道浏览器空闲时间?

    如何跟踪浏览器空闲时间 我用的是IE8 我没有使用任何会话管理 也不想在服务器端处理它 这是纯 JavaScript 方法来跟踪空闲时间 并在达到一定限制时执行一些操作 var IDLE TIMEOUT 60 seconds var idl
  • PHP LDAP 查询获取特定安全组的成员

    我正在努力让 LDAP 查询工作来为我提供安全组的成员 我们的活动目录结构设置为 DC domain DC co dc uk然后 我们有一个名为 公司用户 的 OU 其中有一个用于 IT 和标准的 OU 在这些中我们创建了用户 所以我被设置
  • 根据特定字符获取整个字符串或子字符串

    我有一个包含 MIME 类型的字符串 例如application json 现在我想将其与实际的 HTTP 标头进行比较 在本例中content type 如果标头包含 MIME 类型 那么就很简单 if mimeType contentT
  • JavaScript 中的实时摩尔斯电码转换器

    在看到谷歌关于莫尔斯电码 gmail 的愚人节笑话后 我想我应该尝试用 javascript 创建一个实时莫尔斯电码转换器 我正在使用正则表达式和替换将莫尔斯电码更改为字符 例如 replace g a replace g r 我遇到的问题
  • JavaScript 提升解释

    下面的片段有什么区别 var a 0 function b a 10 return function a b console log a gt 10 and var a 0 function b a 10 return function a
  • 不使用控件时,视频元素在 Chrome 中消失

    So I think这是一个浏览器错误 它出现在一个更复杂的设计 网站中 但我已经进行了很好的尝试 简化了我的代码和设计等 并发现了以下内容 嵌入时
  • 正则表达式库基准

    我最近一直想知道正则表达式实现的性能 并且很难想出很多有用的信息 它很容易对浏览器 javascript 正则表达式性能进行基准测试 网上有很多工具 Chrome 和 Opera 中的 javascript 正则表达式实现几乎摧毁了所有其他
  • Django 将 JSON 数据传递给静态 getJSON/Javascript

    我正在尝试从 models py 中获取数据并将其序列化为views py 中的 JSON 对象 模型 py class Platform models Model platformtype models CharField max len
  • 如何:带有 onclick 的 div 位于另一个带有 onclick 的 div 中

    只是一个简单的问题 我遇到了 div 与 onclick javascript 之间的问题 当我点击内部 div 时 它应该只触发它的 onclick javascript 但外部 div 的 javascript 也会被触发 用户如何点击
  • p5 向量减法“sub”返回错误

    我一直在尝试将 p5 草图上传到 React 构建中 使用react p5 wrapper 我能够成功在屏幕上渲染画布 但是 某些矢量函数会导致错误 var distance this position dist ball position
  • 如何获得 JavaScript 阶乘程序的循环来显示所使用的工作?

    你好 我面临着用 JavaScript 编写一个程序的挑战 尽管我对它不太了解 但它要求用户输入一个数字 然后计算该数字的阶乘 我使用了已经提出的问题并设法使计算正常工作 但无法获得所需的输出 我必须在以下输出中获取它 而不使用任何花哨的库

随机推荐

  • 如何写一个解释器?

    我决定用 Ruby 编写一个小型解释器作为我的下一个项目 我需要什么知识 技能才能成功 我还没有决定要解释的语言 但我正在寻找一种不是玩具语言 但相对容易编写解释器的语言 提前致谢 你至少必须学习 词法分析 将字符分组为标记 解析 将标记分
  • Bootstrap 缩略图中的垂直居中约束图像

    Using 推特引导程序 我正在尝试创建一个水平滚动的系列缩略图它允许在显示缩略图的行中使用滚动条 如下所示 使用以下 HTML 我可以完成大部分工作 div class row Hello there div div class row
  • fgets 实现 (K&R)

    我是编程新手 从 Objective C 开始 但决定在进一步发展之前先回到基础知识 我花了一些时间在 C 上 并且正在努力克服指针混乱 我的问题是关于 K R 所说的 fgets 是如何实现的 第 165 页 第二版 下面的代码直接来自文
  • 在片段中运行时更改方向时更改布局,而无需重新创建视图

    我尝试开发第一个应用程序 从网络下载图像并在网格视图中显示它们 gridview 是主 Activity 的一个片段 下载过程是通过 onCreate 函数中的 AsyncTask 完成的 为了在改变方向时不再次下载图像 我设置了andro
  • XML 数据类型方法“值”必须是字符串文字[重复]

    这个问题在这里已经有答案了 如何更改我的查询以免发生此错误 XML 数据类型方法 值 必须是字符串文字 T SQL代码 Declare Count Int 1 While count lt j Begin insert into mytab
  • 使用Google Closure编译器[重复]

    这个问题在这里已经有答案了 可能的重复 使用 Google Closure Compiler 编译 jQuery 我正在使用 jQuery 并且我的所有 JS 代码都在 application js 文件中 当我使用 Google Clos
  • 在 Android 上从 GPS 提供商获取“粗略”位置

    我的应用程序只需要非常粗略的位置数据 因此我最初将清单权限设置为ACCESS COARSE LOCATION 并设置一个位置侦听器NETWORK PROVIDER 这为我提供了我所需要的粗略位置估计 但前提是 Google 定位服务已打开
  • 论坛如何向您显示未读主题?

    我有用 php mysql 编码的用户讨论论坛 我想知道知名论坛如何向您显示哪些主题中有新帖子 通常是通过更改线程旁边的图标图像而不使用任何资源 The simplest方法是跟踪某人上次登录的时间 当他们回来访问时 从那时起更新的所有内容
  • iOS 13 `withTintColor` 不遵守我分配的颜色

    我发现新的 iOS 13 UIImage 属性的行为withTintColor renderingMode 难以理解 它的用途是什么 它与图像出现的上下文的色调颜色有何关系 例如 let im UIImage systemName circ
  • 字符串集??!​​!

    您熟悉这个块 Var mySet Set Of Char C Char begin mySet a b c If C In mySet Then ShowMessage Exists end 有什么办法可以申报吗Set Of STRING
  • 为什么我不能在 IE7 中使用相对 URL?

    我已经用谷歌搜索了一段时间 似乎找不到这个问题的答案 我的问题如下 对于我的 jquery 我需要我的链接是相对的而不是绝对的 我的 PHP 设置为返回相对 url 一切正常 直到我在 IE7 中测试它 由于某种原因 IE7 不断将我的相对
  • 如何删除名称以“-”开头的分支

    在尝试创建跟踪分支时 我设法创建了一个名为 t 的本地分支 我无法删除分支 因为分支名称也是一个参数 这是在 Windows 机器上 git branch D t fatal branch name required 逃避也无济于事 git
  • jQuery和prototype.js冲突,如何保持jQuery为$?

    所以我正在开发一个同时使用 jQuery 和prototype js 的网站 但是它们是冲突的 我进行了相当多的研究 发现人们解决这个问题的唯一方法是使用
  • 无状态类仿函数什么时候可以代替 C 风格函数?

    我在 SO 上找到了一些很好的函子示例 例如this一 所有令人信服的例子似乎都在定义的类中使用了状态operator 我在一本书中遇到一个例子 它定义了没有状态的函数调用运算符 我不禁觉得这是一种尴尬的用法 并且普通风格的函数指针会比使用
  • LocationManager 返回旧的缓存“Wifi”位置和当前时间戳

    我正在尝试获取当前位置 为此 我实现了一个 LocationListener 并将其注册到网络和 GPS 提供商 locationManager requestLocationUpdates LocationManager GPS PROV
  • 将 Objective-C 应用程序链接到 C++ 静态库

    我正在尝试使用 Xcode 构建一个链接到静态 C 库的 Objective C 桌面应用程序 我正在使用苹果的 clang 编译器 我收到以下链接器错误 Apple clang version 3 0 tags Apple clang 2
  • 使用 GroovyShell 从 Gradle 运行 Groovy 脚本:线程“main”中出现异常 java.lang.NoClassDefFoundError:org/apache/commons/cli/ParseException

    我想从我的 Gradle 构建脚本运行一个 groovy 命令行脚本 我在 Gradle 脚本中使用此代码 def groovyShell new GroovyShell groovyShell run file script groovy
  • 覆盖电子

    我想知道是否可以将电子制作的应用程序覆盖在游戏上 本质上类似于游戏中蒸汽覆盖的方式 我想要这个 因为我们已经制作了一个计时器网络应用程序来计时任务 并正在讨论如果可能的话将其作为覆盖层 为游戏中重复发生的某些事件计时 我不知道这是否可以实现
  • cassandra将数据从一个列族复制到另一个列族

    我是卡桑德拉的新手 我需要将数据从一个columnFamily复制到cassandra中同一键空间中的另一个columnFamily 比如说 我们在键空间K1中有一个A1columnFamily 所以现在我需要在同一键空间K1中创建colu
  • DN 的 JavaScript 正则表达式

    我想要一个正则表达式来验证所有类型的可能 DN 我创建了一个 但效果不太好 A z0 9 1 A z0 9 1 and 其他一些改变它 但徒劳无功 可能的 DN 可以是 CN abcd CN abcd O abcd C us CN abcd