gpt4 book ai didi

java - 如何从我的正则表达式中删除这个字符?

转载 作者:行者123 更新时间:2023-12-01 21:43:17 24 4
gpt4 key购买 nike

我慷慨地使用了 this question 中接受的答案- 当像这样实现时,正则表达式似乎确实可以正确检查非法字符:

public static boolean checkInvalidCharacter (String alphaNum) 
{
if (alphaNum == null) return false;

try {
boolean isRegex = false;
RE r = new RE("^.*?(?=[\\^#%&$\\*:<>\\?/\\{\\|\\}]).*$");
isRegex = r.match(alphaNum);
System.out.println("isRegex: "+isRegex);
System.out.println("Space");
return r.match(alphaNum);
} catch (RESyntaxException e) {
return false;
}
}

但是,我们需要接受这些字符的子集 (:?/*&$),当我尝试删除“:”以查看它是否有效时,我收到错误“语法错误:缺少要关闭的操作数” ”。

我假设 [] 括号中的字符集将是正在检查的字符集 - 这是一个错误的假设吗?更重要的是,如何从这个正则表达式中删除有效的字符列表,以便我可以将它与我的字符串进行比较?

最佳答案

整个方法过于复杂。

你尝试过吗:

public static boolean checkInvalidCharacter (String alphaNum) {
return alphaNum != null && alphaNum.matches(".*[\\^#%<>\\{\\|\\}].*");
}

或者更好的:

public static final String INVALID_CHARACTERS = "^#%<>{}|";
private static final Pattern INVALID_PATTERN = Pattern.compile("["+Pattern.escape(INVALID_CHARACTERS)+"]");

public static boolean containsInvalidCharacters(String input) {
return input != null && INVALID_PATTERN.matcher(input).find();
}

关于java - 如何从我的正则表达式中删除这个字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36223035/

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