我正在尝试验证String只包含某些单词和字符。
我将收到一个字符串,需要检查它是否只包含以下内容:
如果字符串中有任何其他字符或单词,我需要拒绝它。
有效的字符串是: (1或((2和3)或4和5))
我认为正则表达式是解决这个问题的方法,但我无法弄清楚如何构建正则表达式来做到这一点。
我知道正则表达式是:
我加入了他们,所以模式是: “\ SOR \ S | \砂\ S | \ d + | \(| \)”
这显然可以找到任何值,但如果字符串中有额外的字符或字符串,则不会拒绝该字符串。
我不必使用正则表达式,但是当我了解它们时,这将是一些帮助的理想示例。 我一直在使用http://www.regexplanet.com/advanced/java/index.html测试不同的组合,但现在承认失败了。
任何帮助表示感谢。
答案 0 :(得分:2)
您可以将构造的正则表达式与matches()
方法一起使用,只要您转义\
+
并允许boolean happy = testString.matches("(\\sOR\\s|\\sAND\\s|\\d+|\\(|\\))+");
运算符重复出现:
less than 10
我不确定\\d+
的含义,但如果您的意思是该数字可以是0-9,则可以将\\b\\d\\b
替换为\\b\\d{1,9}\\b
。如果您的意思是允许1-9位数,则可以使用{{1}}。
答案 1 :(得分:0)
我会把你可接受的角色放在一个常数中。然后将String测试并将其转换为字符数组并逐个字符地查看它,看看它是否在您的常量中。如果没有爆炸。成功完成=良好的字符串。
我认为没有更短的路。