gpt4 book ai didi

java - 在java中使用正则表达式与不可打印的字符

转载 作者:太空宇宙 更新时间:2023-11-04 13:33:10 26 4
gpt4 key购买 nike

我正在使用此处找到的正则表达式 ( link ) 来提取工作正常的域字符串。

正则表达式是

^((?!-)[A-Za-z0-9-]{1,63}(?<!-)\\.)+[A-Za-z]{2,6}$

我想知道,如何更改它才能匹配包含不可打印字符而不是点 (.) 的域?

我知道正则表达式代码就像\x01、\x02 等。但如果我用其中之一替换点,则正则表达式不再匹配

提前致谢

最佳答案

。将匹配任何单个字符,无论它是否可打印。您当前的组 [A-Za-z0-9-] 对其进行限制。您可以将其更改为“除文字点之外的任何字符”...即 [^.]。

Pattern regex = Pattern.compile("^((?!-)[^.]{1,63}(?<!-)\\.)+[A-Za-z]{2,6}$");
System.out.println(regex.matcher("\u0001\u0002\u0003\u0004..com").find()); // => false
System.out.println(regex.matcher("\u0001\u0002\u0003\u0004.com").find()); // => true
System.out.println(regex.matcher("google.com").find()); // => true

如果您尝试验证 IDN(国际域名)的用户输入,请注意有 new gTLDs包含非字母数字字符示例 .ÎكÉ (.network)。

关于java - 在java中使用正则表达式与不可打印的字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31963132/

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