Java 字符串上的Reg表达式验证

Java 字符串上的Reg表达式验证,java,Java,我可以在以下用例中使用Reg表达式吗 我需要编写一个布尔方法,它接受一个字符串参数,该参数应该满足以下条件 长度为20个字符的字符串 前9个字符将是一个数字 接下来的2个字符将是字母表 接下来的2个字符将是一个数字。(1到31或99) 接下来的1个字符将是字母表 最后6个字符将是一个数字 在本文中,我为第一个需求编写了代码: [a-zA-Z0-9]{20}-此表达式适用于第一种情况。我不知道如何编写一个完整的reg表达式来满足整个需求。 请帮助。阅读字符串,尤其是关于以及的部分。阅读字符串,

我可以在以下用例中使用Reg表达式吗

我需要编写一个布尔方法,它接受一个字符串参数,该参数应该满足以下条件

  • 长度为20个字符的字符串
  • 前9个字符将是一个数字
  • 接下来的2个字符将是字母表
  • 接下来的2个字符将是一个数字。(1到31或99)
  • 接下来的1个字符将是字母表
  • 最后6个字符将是一个数字
在本文中,我为第一个需求编写了代码: [a-zA-Z0-9]{20}-此表达式适用于第一种情况。我不知道如何编写一个完整的reg表达式来满足整个需求。
请帮助。

阅读字符串,尤其是关于以及的部分。

阅读字符串,尤其是关于以及的部分。

是的,可以使用正则表达式进行此操作

忽略“20个字符”部分,描述通过连接9位数字、2个字母、2个数字、1个字母和另一个数字创建的字符串

  • 以字符串开头:
    ^
  • 然后是9位数。
    \d
    方便地描述了字符集
    [0-9]
    ,因此
    \d{9}
    表示“九位”
  • 然后是两封信。
    \w
    类太宽,所以请坚持使用
    [a-zA-Z]
    来获取字母
  • 然后是另外两个数字。它们似乎来自一个受限的集合,所以用交替和分组来描述集合
  • 然后是另一个字母和另一个数字
  • 最后,您必须在字符串末尾结束:
    $
作为参考,此正则表达式表示“字符串是九个字母,然后是12-15或99,然后是另一个字母”:


是的,可以为此使用正则表达式

忽略“20个字符”部分,描述通过连接9位数字、2个字母、2个数字、1个字母和另一个数字创建的字符串

  • 以字符串开头:
    ^
  • 然后是9位数。
    \d
    方便地描述了字符集
    [0-9]
    ,因此
    \d{9}
    表示“九位”
  • 然后是两封信。
    \w
    类太宽,所以请坚持使用
    [a-zA-Z]
    来获取字母
  • 然后是另外两个数字。它们似乎来自一个受限的集合,所以用交替和分组来描述集合
  • 然后是另一个字母和另一个数字
  • 最后,您必须在字符串末尾结束:
    $
作为参考,此正则表达式表示“字符串是九个字母,然后是12-15或99,然后是另一个字母”:


您的第一个需求已经隐含在其余的需求中,因此我将跳过它。然后,只需逐个编写与每个部分匹配的正则表达式代码:

[0-9]{9}[a-zA-Z]{2}...
对于可能是1到31的数字,有一个特殊的考虑。虽然可以在一个正则表达式中匹配这一点,但这将是冗长且难以理解的。相反,在正则表达式中执行基本匹配,并通过将该部分放在括号中将其提取为捕获组:

([0-9]{2})

如果使用
Pattern
Matcher
应用正则表达式,并且字符串与模式匹配,则只需输入两个字符即可,使用
Integer.parseInt()
将它们转换为整数(这是完全安全的,因为您知道这两个字符是数字),然后正常检查值。

您的第一个需求已经隐含在其余的需求中,因此我将跳过它。然后,只需逐个编写与每个部分匹配的正则表达式代码:

[0-9]{9}[a-zA-Z]{2}...
对于可能是1到31的数字,有一个特殊的考虑。虽然可以在一个正则表达式中匹配这一点,但这将是冗长且难以理解的。相反,在正则表达式中执行基本匹配,并通过将该部分放在括号中将其提取为捕获组:

([0-9]{2})

如果使用
Pattern
Matcher
应用正则表达式,并且字符串与模式匹配,则只需输入两个字符即可,使用
Integer.parseInt()
将它们转换为整数(这是完全安全的,因为您知道这两个字符是数字),然后正常检查该值。

此正则表达式

  ^[0-9]{9}[a-zA-Z]{2}([1-9]|[1-2][0-9]|3[0-1]|99)[a-zA-Z]([0-9]{6})$
接受 开头有9个字母, 后面是两个字母, 后跟1到31或99之间的数字, 后面是字母表,
后跟6位。

此正则表达式采用

  ^[0-9]{9}[a-zA-Z]{2}([1-9]|[1-2][0-9]|3[0-1]|99)[a-zA-Z]([0-9]{6})$
接受 开头有9个字母, 后面是两个字母, 后跟1到31或99之间的数字, 后面是字母表,
后面跟着6位数字。

这好像是家庭作业。你有没有看过中提到的免费正则表达式编辑器来帮助你创建正则表达式?这看起来像是家庭作业。你有没有看过中提到的免费正则表达式编辑器来帮助你创建正则表达式?