gpt4 book ai didi

java - 需要根据 ASCII 和 BASE64 编码的 UTF-8 字符串验证域的帮助

转载 作者:行者123 更新时间:2023-12-01 21:53:22 25 4
gpt4 key购买 nike

我正在使用JDK 1.7在java中进行一些与ldap相关的测试

我有一个配置文件,我从中读取一个属性的值,例如“dc=domain1,dc=com”,以便稍后将其传递给 ldap 进行搜索操作。

这里我想验证来自属性文件的值,并且该值应该仅为 ASCII 或 Base64 编码的 UTF-8 字符串。

我编写了以下正则表达式来验证字符串,但似乎存在一些问题。

这是我的示例代码:

public class ValidateDN {

public static void main(String[] args) {

String istr = "dc=domain1,dc=com";
String myregex = "^dc=[a-zA-Z0-9\\-\\.]*[,dc=[a-zA-Z0-9\\-\\.]*]*";

if (istr.matches(myregex)){
System.out.println("String matches");
}
else{
System.out.println("String not matching");
}

}
}

它应该传递所有字符串,例如:

dc=com
dc=domain1,dc=com
dc=domain2,dc=domain1,dc=com

它应该失败的值:

dc=domain1,dc=com,d
dc=domain1,dc=com,dc

(键不完整或语法无效)

任何人都可以建议在这里应该做什么来正确验证这一点吗?

最佳答案

您的正则表达式中有一个重大错误 - 您使用的是方括号而不是括号。方括号的意思是:“任何字符”,而不是字符序列。

此外,您的正则表达式可以简化为:

(dc=[\w-]+,?)*

由于 LDAP DN 可能包含空格,您可能需要考虑使用:

(\s*dc\s*=\s*[\w-]+\s*,?)*

请记住在插入代码时根据需要转义斜杠。

关于java - 需要根据 ASCII 和 BASE64 编码的 UTF-8 字符串验证域的帮助,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34811330/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com