如何匹配javascript表达式中所有可能的数字?

Don*_*mmy 3 javascript regex

我已经看到很多正则表达式的匹配数字,但它们都没有完全捕获所有有效数字.

例如,我需要匹配以下所有内容:

//All of these can be preceded/followed by any of: +=-()!~%$#^&*{}[]|\;<>,
23
-23
4.8
1.3e-8
1.38e+5
-1.3e-2
-1.4e+2
Run Code Online (Sandbox Code Playgroud)

但不符合以下条件:

w23
-23w
_4.8 //This would see 8 as a number but not _4.
4yes
1.3ed-8 //This would see 1 and -8 as numbers but not .3ed
12dog
12foo
Run Code Online (Sandbox Code Playgroud)

有没有办法做这样的正则表达式?

por*_*ges 5

我发现你的要求有点奇怪,但是这个正则表达式可以满足你所有的例子:

-?\b\d+(\.\d+)?([eE][-+]?\d+)?\b
Run Code Online (Sandbox Code Playgroud)

使其符合您的规范的关键是使用\b单词边界匹配.

每个结果:

23:
  23
-23:
  -23
4.8:
  4.8
1.3e-8:
  1.3e-8
1.38e+5:
  1.38e+5
-1.3e-2:
  -1.3e-2
-1.4e+2:
  -1.4e+2
w23:
-23w:
_4.8:
  8
4yes:
1.3ed-8:
  1
  -8
12dog:
12foo:
Run Code Online (Sandbox Code Playgroud)