表示数值的字符串

1.题目

在这里插入图片描述

2.解法(正则表达式)

为了方便说明,所以把每个字符分开了

import java.util.regex.Pattern;

public class Solution {
    public boolean isNumeric(char[] str) {

        // ^和$框定正则表达式 [+-]只有括号内的字符才参与匹配,只匹配单个字符, ?代表+或者-只出现0次或者1次
        String p1 = "^[+-]?";
        // \d在java中有特殊含义所以要加转义字符\, \d代表[0-9], *表示数字出现0或者多次,例如-.123
        String p2 = "\\d*";
        /**
         * \\.是因为.在正则表达式中,.代表任意字符,所以需要转义\.
         * 因为\也是有特殊意义的字符(把后面的字符标记为特殊字符),
         * 所以要再加一个\转义,所以为\\. 这个后面加?意思是小数点可以出现0次或者1次
         * 非捕获分组 (?:) 只匹配子表达式,并不捕获结果
         */
        String p3 = "(?:\\.\\d+)?";

        // e或者E后面也可以不出现+或者-,所以后面加了?,但是E或者e后面必须有数字,所以加了\\d+
        String p4 = "(?:[Ee][+-]?\\d+)?";

        return Pattern.matches(p1 + p2 + p3 + p4, new String(str));
    }
}

可以将上面的所有字符串连成一句:

String pattern = "^[+-]?\\d*(?:\\.\\d+)?(?:[Ee][+-]?\\d+)?";
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值