data: lv_str type c.
IF cl_abap_matcher=>matches(
pattern = '^(-?[1-9]\d*(\.\d*[1-9])?)|(-?0\.\d*[1-9])$'
text = lv_str) = abap_true.
WRITE '数字'.
ELSE.
WRITE '非数字'.
ENDIF.
-? :负号
[1-9]\d* :整数部分(整数第一位不为0,后面的随意)
\.\d*[1-9] :小数部分(小数点最后一位不为0,中间的随意)
0\.\d*[1-9] :0.xxxx形式的小数
参考链接:https://www.cnblogs.com/dy-debug/p/8057792.html