|='%_ 验证应允许带有一个或多个特殊字符和-6ren">
gpt4 book ai didi

java - 允许特定特殊字符的正则表达式

转载 作者:行者123 更新时间:2023-11-30 06:59:33 25 4
gpt4 key购买 nike

我目前正在验证用户名输入,我必须验证允许将某些特殊字符插入到输入中。

字符的白名单是:

$#+{}:?.,~@"和空格

黑名单字符是:

^$;\-()<>|='%_

验证应允许带有一个或多个特殊字符和空格的任何字母数字字符。它也可以与黑名单一起工作,无论哪种方式都可以。

我有这个:

public static boolean alphNum(String value) {
Pattern p = Pattern.compile("^[\\w ]*[^\\W_][\\w ]*$");
Matcher m = p.matcher(value);
return m.matches();
}

仅适用于字母数字字符和空格,但现在还希望允许特定的特殊字符列表。

以下是我需要允许的类型的一些示例:

  • 姓名 1$
  • 名字 1# 名字 2
  • 名字 1 名字 2
  • 姓名2
  • 姓名 1 姓名...

我见过很多正则表达式验证,但没有一个如此具体,如果有人能帮我解决这个问题,我将不胜感激。

最佳答案

如果没有诸如“必须以字母开头”或“必须包含至少一个字母”(您的问题未指定任何字母)之类的限制,并假设“空格”是指空格,但是不是制表符、换行符等,那么表达式就是:

Pattern.compile("^[\\$#\\+{}:\\?\\.,~@\"a-zA-Z0-9 ]+$");

请注意,此正则表达式允许诸如仅一个空格或与另一个相同的用户名(尾随空格数除外)等内容,如果您想要更严格一些并强制以字母开头或数字(例如),你可以这样做:

Pattern.compile("^[a-zA-Z0-9][\\$#\\+{}:\\?\\.,~@\"a-zA-Z0-9 ]+$");

关于java - 允许特定特殊字符的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31462832/

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