RegEx匹配字符串末尾的数字

Phi*_*hil 10 javascript regex

我正在尝试使用正则表达式匹配字符串末尾的数字.例如,字符串可能如下所示:

var foo = '101*99+123.12'; // would match 123.12
var bar = '101*99+-123';   // would match -123
var str = '101*99+-123.';  // would match -123.
Run Code Online (Sandbox Code Playgroud)

这是我到目前为止所得到的,但如果没有小数点,它似乎匹配整个字符串:

foo.match(/\-?\d+.?\d+?$/);
Run Code Online (Sandbox Code Playgroud)

我认为这意味着:

  • \-?:可选" - "符号
  • \d+:1位或更多位数
  • .?:可选的小数点
  • \d+?:小数点后可选1位或更多位数
  • $:匹配字符串的结尾

我错过了什么?

nnn*_*nnn 5

.匹配任何角色.你需要逃避它\.

试试这个:

/-?\d+\.?\d*$/
Run Code Online (Sandbox Code Playgroud)

那是:

-?           // optional minus sign
\d+          // one or more digits
\.?          // optional .
\d*          // zero or more digits
Run Code Online (Sandbox Code Playgroud)

正如你在MDN的正则表达式页面上看到的那样,+?是1或更多的非贪婪匹配,而不是1或更多的可选匹配.

  • @ Vitim.us - (如果你不是开玩笑的话)他没有窃取你的答案:他在你面前回答并且之后没有编辑他的答案.根据评论,看起来他帮助修复了你的答案,所以我希望你只是在开玩笑. (2认同)