簡體   English   中英

正則表達式允許在 Java 中包含 .123 和 123 等小數位。

[英]Regular expression to allow decimal places including .123 and 123. etc in Java

朋友們

我有以下正則表達式"^[0-9]{1,12}+(\\\\.[0-9]{1,4})?$"允許以下值

123456789012.1234 這是一個有效的十進制值 {12,4}

123456789012 這是一個有效的整數值等

它不允許像 .1235 等值,我應該如何修改上面的正則表達式,以便它也允許像.123 和 123等值

我猜,

^(?:[0-9]{1,12}(?:\\.[0-9]{0,4})?|\\.[0-9]{0,4})$

可能有點接近。

測試

import java.util.regex.Matcher;
import java.util.regex.Pattern;


public class RegularExpression{

    public static void main(String[] args){

                
        final String regex = "^(?:[0-9]{1,12}(?:\\.[0-9]{0,4})?|\\.[0-9]{0,4})$";
        final String string = "123456789012.1234\n"
             + "123456789012\n"
             + ".1235\n"
             + ".123\n"
             + "123.\n"
             + ".12345\n"
             + "0.12345";

        final Pattern pattern = Pattern.compile(regex, Pattern.MULTILINE);
        final Matcher matcher = pattern.matcher(string);

        while (matcher.find()) {
            System.out.println("Full match: " + matcher.group(0));
            for (int i = 1; i <= matcher.groupCount(); i++) {
                System.out.println("Group " + i + ": " + matcher.group(i));
            }
        }


    }
}

輸出

Full match: 123456789012.1234
Full match: 123456789012
Full match: .1235
Full match: .123
Full match: 123.



如果你想簡化/更新/探索表達式,它已在regex101.com 的右上角面板中進行了解釋 如果您有興趣,可以在此調試器鏈接中觀看匹配步驟或修改它們。 調試器演示了 RegEx 引擎如何逐步使用一些示例輸入字符串並執行匹配過程。


正則表達式電路

jex.im可視化正則表達式:

在此處輸入圖片說明

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM