我的数字格式如下
1, 2, 3
1.23, 1.23e2, 1.23d3
12_ip, 15_kp
1.23_wp, 1.23e2_wp, 1.23d2_wp
什么JavaScript regexp模式可以识别这些数字?我找到了类似下面的东西:
x= '(?=\\b|\\+|\\-|\\.)(?=\\.\\d|\\d)(?:\\d+)?(?:\\.?\\d*)(?:[de][+-]?\\d+)?\\b\\.?'
但它无法识别1.23_wp
或12_kp
。
答案 0 :(得分:1)
我试试看:
\b[+-.]?\d+\.?\d*([de]\d+)?(_[wki]p)?\b
PS:我对Fortran不是很熟悉,但我认为.1
和1.5e-30
是常见的法律实数。以下改进的模式也匹配:
[+-]?(?:\.|\d+\.?)\d*(-?[de]\d+)?(_[wki]p)?\b
PS:我放弃了前导词边界以匹配.1
。
使用:
\[+-\]?(?:\.|\d+\.?)\d*(\[de\]\[+-\]?\d+)?(_\[a-z\d\]+)?\b
也匹配
1.23e-3
1.23d+5
1.23e3_pr123
1.23e+3_qwe098
1.23_myprecision
1.23e5_anyname
.23d+5