java 验证逻辑表达式格式的字符串的合法性
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java 验证逻辑表达式格式的字符串的合法性相关的知识,希望对你有一定的参考价值。
求助:需求是:用户输入一个字符串,字符固定只能是大写的A、B、C、D的4个或者其中几个,逻辑运算符只能是:&&、||、!、^ ,中间可以使用括号,如: A && B || C && D 、 (A || B) && (C || D)、A && B 等这些都符合要求,但是 AB || C 或者出现其他字符都不让通过,想到应该应该使用正则表达式,但是不知道怎么写,或者使用代码实现也行,求大牛帮忙,感谢!!!!
能力有限,写的代码可能有些麻烦,不知道还有没有漏洞了。。你看看行不
public class Mainpublic static void main(String[] args)
String str = "A && (!B && C) || C && D &&";
System.err.println(matched(str)); // 此时打印“完全匹配”
public static String matched(String str)
if (str.matches("[() ABCD\\\\|&!\\\\^]*")) // 保证只有ABCD|&()!^和空格
if (str.matches(".*[ABCD] *[ABCD]+.*"))
return "字母重叠";
if (str.contains("&")) // 如果有“&”符号出现
int index = str.indexOf("&");
while (index != -1 && index < str.length())
if (index + 1 >= str.length() || str.charAt(index + 1) != '&')
return "\\"&\\"未成对出现";
else
index += 2;
if (index > str.length())
return "\\"&\\"未成对出现";
index = str.indexOf("&", index);
if (str.contains("|")) // 如果有“|”符号出现
int index = str.indexOf("|");
while (index != -1 && index < str.length())
if (index + 1 >= str.length() || str.charAt(index + 1) != '|')
return "\\"|\\"未成对出现";
else
index += 2;
if (index > str.length())
return "\\"|\\"未成对出现";
index = str.indexOf("|", index);
return "完全匹配";
return "有未知字符存在";
追问
感谢,有思路就行,有漏洞我自己补充,感谢支持!~~
无法验证以下两种情况:
String str = "A && || C"; //两个逻辑运算符中间没有字符,正确的格式如“A && C || B”
String str = "A && B !C"; //‘!’ 运算符的特殊处理,正确的格式如“A && B || !C”
已解决,但是不知道怎么贴代码.....
哈哈客气了 有问题接着问 我不需要采纳率的
参考技术A 我有一个方法,但不大好。大概效果是这样的:在控制台运行程序,然后输入你要检测的字符串,通过nextLine读入,然后通过if等进行比对和判断,在if里面设置正确和错误的判定就可以了以上是关于java 验证逻辑表达式格式的字符串的合法性的主要内容,如果未能解决你的问题,请参考以下文章