我想验证一个字符串只包含某些字和字符。Java检查字符串只有某些字和字符
我要接受一个字符串,需要检查它仅包含以下内容:
- “(”
- “)”
- “和” 注意空格
- “OR”注意空格
- 任何整数。如果我可以同时检查它小于10,那将是一种奖励,但如果它使代码复杂化,我可以单独执行此操作。
如果字符串中有任何其他字符或单词,我需要拒绝它。
有效的字符串是: (1 OR((2和3)或4,5))
我觉得正则表达式是要要对这个办法,但我不能工作了如何构建正则表达式来做到这一点。
我知道正则表达式模式是:
- \(
- \)
- \ SOR \ S
- \砂\ S
- \ d +
我's已加入他们在一起,所以模式是: “\ sOR \ s | \ sAND \ s | \ d + | \(| \)”
这显然起作用,它会找到任何值,但如果字符串中有额外的字符或字符串,则不会拒绝该字符串。
我不必使用正则表达式,但是当我正在学习它们时,这将是一个理想的例子,可以提供一些帮助。 我一直在使用http://www.regexplanet.com/advanced/java/index.html来测试不同的组合,但现在已经承认失败。
任何帮助表示赞赏。
请注意,正则表达式(通常)只能匹配常规语言。如果你想让正则表达式检查匹配的paranethesis,那么你已经离开了“正规语言国家”:正则表达式不能这样做。换句话说:你不能识别“(1或(”)作为非法表达 –