带有条件的java中的正则表达式

Posted

技术标签:

【中文标题】带有条件的java中的正则表达式【英文标题】:regex in java with conditions 【发布时间】:2012-09-10 08:42:59 【问题描述】:

我必须根据以下条件用Java编写Regex:

总位数字符限制 = 64 可以接受单个数字 0 如果多于一个数字,则第一个数字必须是 1 到 9 后面的数字可以是 0 到 9 小数点后允许两位数 不接受逗号

到目前为止,我只得到了这个:

(\\d1,64)

谁能帮帮我

【问题讨论】:

【参考方案1】:

如果你把它分成 4 个场景,可能是最清晰的:

(0(\.\d1,2)?|[1-9](\d0,63|\d0,61\.\d|\d0,60\.\d\d))

这是一个 0 可选地后跟一个小数和一个或两个数字,或者一个 1-9 后跟以下之一:

最多多 63 个数字 最多多 61 个数字,一个小数,多一个数字 最多多 60 个数字,一个小数,多两个数字

绝对值得在 Java 正则表达式中添加一些内联 cmets,但我对 Java 的正则表达式语法不太了解,所以我将把它作为练习留给读者。

【讨论】:

【参考方案2】:
Pattern regex = Pattern.compile(
    "^             # Start of string                 \n" +
    "(?!.65)     # Assert length not 65 or greater \n" +
    "(?:           # Match either                    \n" +
    " 0            #  0                              \n" +
    "|             # or                              \n" +
    " [1-9]\\d*    #  1-n, no leading zeroes         \n" +
    ")             # End of alternation              \n" +
    "(?:           # Match...                        \n" +
    " \\.          #  a dot                          \n" +
    " \\d2       #  followed by exactly 2 digits   \n" +
    ")?            # ...optionally                   \n" +
    "$             # End of string", 
    Pattern.COMMENTS);

【讨论】:

感谢您的解释。你摇滚。 @user1679321,如果这回答了您的问题,请检查它旁边的标记。欢迎来到 SO!

以上是关于带有条件的java中的正则表达式的主要内容,如果未能解决你的问题,请参考以下文章

手机号码的正则表达式,带有某些条件的电话号码验证

你可以在 Django 模板条件中使用正则表达式吗?

我可以使用哪种正则表达式条件来捕获具有 R 中单位的数学公式?

java正则表达式 两个条件怎么写?本来一个过滤条件的时候是可以的,加多了另一个条件就不行了

此正则表达式方言不支持条件

java中的正则表达式