java - 如何验证正则表达式中的可选子字符串

标签 java android regex

我有一个验证 14 个字符长度的正则表达式。 但现在我想验证它是否可以乘以 2 的长度。

我当前的正则表达式是 "(0[0-1][0-9][0-9][0-9][0-9]0[0-2]0[0-4] 0[0-2]0[0-2])"

它只接受 14 位长度的字符串

match : `00000002000102 00000002000101`
do not match : `00 , 0000 , 00000200,`

我想接受上面的这些也不匹配字符串。

我在下面向你解释了我想做什么

已编辑:

这里我再说明一下我的要求

看到我的字符串长度是 14 位数字,现在在我的字符串中前 2 位数字是强制性的。 我的字符串有 6 个不同的验证部分,我将在下面提到。

first part would be  : 00 or 01 only  : Sting length should be 2 only
second part would be : 0000-9999 any value between this.    : Sting length should be 6 only
third part would be  : 00 or 02 only             : Sting length should be 8 only
fourth part would be : 00 or 01 or 04 only even not 03.: Sting length should be 10 only
fifth part would be  : 00 or 01 or 02            : Sting length should be 12 only
sixth part would be  : 00 or 01 or 02            : Sting length should be 14 only
  • 所以在这里,当我的输入字符串包含必填的第一部分时。
  • 如果包含第 2 部分,则第 1 部分和第 2 部分是强制性的 both 和 both 部分都应按照上述验证进行验证。
  • 如果字符串包含第 3 部分也意味着它的长度应该是 8 和它的 包括第一部分和第二部分然后它将强制验证 第一、二、三部分按上述条件
  • 如果字符串包含第 4 部分也意味着它的长度为 10 并且它包含 第一、第二和第三部分然后它将强制验证 第一、二、三、四部分也按上述条件
  • 同上继续第 6 部分。

请帮助我,让我知道在我当前的 reg ex 实现中我必须改变什么

谢谢

最佳答案

编辑:响应编辑问题中的规范:

像这样;现在这真的是你的功课 ;)

^(0[0-1](?:[0-9]{4}(?:0[02](?:0[014](?:0[0-2](?:0[0-2])?)?)?)?)?)$

关于java - 如何验证正则表达式中的可选子字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14037007/

相关文章:

r - 如何删除 df 中非常特殊的字符

java - 需要用 * 编码 String 中的重复模式,这样 * 意味着 "repeat from beginning"

Java 无法解析日期异常 yyyyMMdd h :m a

java - 将值传递给类

Android:为 ARMv7 外部构建 kexec - 错误包括 'expected ' =', ' ,', ' ;', ' asm' 或 '__attribute__' token 之前的 '*'

后视长度不同的 python 正则表达式 "or"

java - 使用 java 创建 YouTube 事件而不提示从浏览器登录

Android onclicklistener 仅适用于 Galaxy S4

android - 如果 EditText 为空,则禁用关闭 AlertDialog

Java:如何用一个替换多个回车?