【问题标题】:How to do validate String using regular expression in java如何在java中使用正则表达式验证字符串
【发布时间】:2012-11-27 13:12:07
【问题描述】:

在这里,我想为仅包含 0 到 6 个数字的字符串创建 regx。 这个字符串包含 0 到 6 个这样的数字。

 Example-1 : "010002030405" Valid String

这个字符串只包含 o 到 6 个数字,所以在这里我使用了这个 regx "[0-6]*"。但是我还想在这个字符串中验证一件事,我希望 0 只在奇数位置 1-6 永远不会在奇数位置。 0 可以放在奇数和偶数位置,但 1-6 只能放在偶数位置。

这里我给了你一些有效和无效的字符串示例

Valid : 000102000004
invalid : 0023015006

我在这里使用了此代码请建议我或告诉我我必须在我的 regx 中更改什么以满足以下验证

1) String contains only 0-6 numbers nothing else.
2) 1-6 would be only even positions only they would not be at odd position ever, 0 would be odd and even position.

代码:

public boolean isOptions(String input) {
    String patternString = "[0-6]*";
    Pattern pattern = Pattern.compile(patternString);
    return pattern.matcher(input).matches();
}

【问题讨论】:

  • "我只想要 0 在奇数位置 1-6 永远不会在奇数位置。0 可以放在奇数和偶数两者上" 你只想要 0 是不是有点矛盾奇数位置,0 可以同时放在奇数和偶数位置?
  • 你真的要在这里使用正则表达式吗?我认为简单的循环和检查在这里应该更容易。
  • stackoverflow.com/questions/691519/… 这将有助于实现您尝试构建的逻辑
  • @Shreya:那不也匹配“022222222”吗?
  • @Hyperboreus 对不起,我的错。我希望偶数和奇数都为 0,仅偶数位置为 1-6。

标签: java android regex string validation


【解决方案1】:

这个没试过,但可能有用:

(0[0-6])*0?

【讨论】:

  • 如何保证1-6只在偶数位置?
  • 因为首先是 0,然后是 0 到 6 之间的任何值。冲洗并重复(这种 2 位数模式)。然后可能会添加最后一个 0。
  • @Hyperboreus 谢谢你能解释一下这个正则表达式吗
  • 此表达式匹配所有有 0 次或多次“0”后跟 0 到 6 之间的数字的字符串;也可能是尾随的 0。
  • @Hyperboreus 好的,我知道了,非常感谢
猜你喜欢
  • 2014-12-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-02-09
  • 2016-07-30
  • 2020-09-16
相关资源
最近更新 更多