gpt4 book ai didi

java - 正则表达式测试失败 - Java

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:32:29 24 4
gpt4 key购买 nike

我正在尝试执行简单的正则表达式。本质上,我想确定我的字符串中是否有特殊字符,如果有,则检查字符串的每个字符是否有两个特定字符,即连字符和点。

我似乎在第一位遇到了问题,涉及确定我的字符串中是否有特殊字符。

下面是我尝试执行此操作的方法,后面是我遇到问题的字符串:

public static boolean stringValidity(String input) {
int specials = 0;

Pattern p = Pattern.compile("[^a-zA-Z0-9 ]");
Matcher m = p.matcher(input);
boolean b = m.find();

if (b) {
System.out.println("\nstringValidity - There is a special character in my string");

for (int i = 0; i < input.length(); ++i) {

char ch = input.charAt(i);

//if (!Character.isDigit(ch) && !Character.isLetter(ch) && !Character.isSpace(ch)) {
++specials;

System.out.println("\nstringValidity - Latest number of special characters is: " + specials);

if((ch == '-') | (ch == '.')) {
specialCharValidity = true;

System.out.println("\nstringValidity - CHAR is valid - specialCharValidity is: " + specialCharValidity + " as char is: " + ch);
} else {
specialCharValidity = false;

System.out.println("\nstringValidity - CHAR is invalid - specialCharValidity is: " + specialCharValidity + " as char is: " + ch);

break;
}
//}
}
} else {
System.out.println("\nstringValidity - There is NO special character in my string");

specialCharValidity = true;
}

return specialCharValidity;
}

以下是我传递给方法的字符串,我希望将其视为具有特殊字符但测试失败的字符串:

"QWERTY"!£$"£$"
"sdfGSDFGSDFG%*^(%*&("

下面是我传递给方法的字符串,我希望这些字符串不会被视为具有特殊字符但测试失败的字符串:

"QWE12342134RTY"
"LOREMIPSUM2354214"

如有任何建议,我们将不胜感激。

最佳答案

您可以通过根据以下模式检查字符串来简化您的代码:

[^a-zA-Z0-9 \-\.]

字符串有效性函数归结为:

public static boolean stringValidity(String input) 
{
return Pattern.compile("[^a-zA-Z0-9 \\-\\.]").matcher(input).find() == false;
}

关于java - 正则表达式测试失败 - Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27489256/

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