簡體   English   中英

如何在此正則表達式中包含負十進制數?

[英]How do I include negative decimal numbers in this regular expression?

我如何通過這個正則表達式匹配負數? 此正則表達式適用於正值,但我希望它也允許負值,例如 -10、-125.5 等。

^[0-9]\d*(\.\d+)?$

謝謝

您應該在開頭添加一個可選的連字符-? ?是一個量詞,表示出現一次或零次):

^-?[0-9]\d*(\.\d+)?$

我用這些值在 Rubular 中驗證了它:

10.00
-10.00

並且都按預期匹配。

 let r = new RegExp(/^-?[0-9]\\d*(\\.\\d+)?$/); //true console.log(r.test('10')); console.log(r.test('10.0')); console.log(r.test('-10')); console.log(r.test('-10.0')); //false console.log(r.test('--10')); console.log(r.test('10-')); console.log(r.test('1-0')); console.log(r.test('10.-')); console.log(r.test('10..0')); console.log(r.test('10.0.1'));

一些正則表達式示例:

正整數

^\d+$

負整數

^-\d+$

整數

^-?\d+$

正數

^\d*\.?\d+$

負數

^-\d*\.?\d+$

正數或負數

^-?\d*\.{0,1}\d+$

電話號碼:

^\+?[\d\s]{3,}$

帶代碼的電話

^\+?[\d\s]+\(?[\d\s]{10,}$

1900-2099 年

^(19|20)[\d]{2,2}$

日期(dd mm yyyy、d/m/yyyy 等):

^([1-9]|0[1-9]|[12][0-9]|3[01])\D([1-9]|0[1-9]|1[012])\D(19[0-9][0-9]|20[0-9][0-9])$

IP v4

^(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]){3}$

我不知道你為什么首先需要[0-9]

嘗試:

^-?\d*(\.\d+)?$

更新

如果您想確保在個位上有一個數字,請使用

^-?\d+(\.\d+)?$

更新(13/08/2014):這是正數和負數的最佳代碼=)

(^-?0\.[0-9]*[1-9]+[0-9]*$)|(^-?[1-9]+[0-9]*((\.[0-9]*[1-9]+[0-9]*$)|(\.[0-9]+)))|(^-?[1-9]+[0-9]*$)|(^0$){1}

我試過這個數字並且工作正常:

-1234454.3435
-98.99
-12.9
-12.34
-10.001
-3
-0.001
-000
-0.00
0
0.00
00000001.1
0.01
1201.0000001
1234454.3435
7638.98701

這將僅在后跟數字時才允許使用-+字符:

 ^([+-](?=\.?\d))?(\d+)?(\.\d+)?$

我在 django url 中有一些關於正則表達式的實驗,需要從負數到正數

^(?P<pid>(\-\d+|\d+))$

讓我們專注於這個(\\-\\d+|\\d+)部分而忽略其他部分,這個分號| 裝置在正則表達式,則負的值將匹配與該\\-\\d+一部分,並且正值到這個\\d+

這將允許正整數和負整數

ValidationExpression="^-?[0-9]\\d*(\\d+)?$"

^[+-]?\d{1,18}(\.\d{1,2})?$

接受正或負十進制值。

這對我有用, 允許負數和正數

 \-*\d+

如果使用 C#:

Regex.Match(someString, @"\-*\d+").Value;

如果你有這個val="-12XXX.0abc23"並且你只想提取十進制數,在這種情況下這個正則表達式 ( ^-?[0-9]\\d*(\\.\\d+)?$ ) 不會幫助你實現它。
這是具有正確檢測正則表達式的正確代碼:

 var val="-12XXX.0abc23"; val = val.replace(/^\\.|[^-?\\d\\.]|\\.(?=.*\\.)|^0+(?=\\d)/g, ''); console.log(val);

只需添加一個 0 或 1 標記:

^-?[0-9]\d*(.\d+)?$

僅對於負數,這是完美的。

^-\d*\.?\d+$

數字的正則表達式,可選小數點,可選負數:

^-?(\d*\.)?\d+$;

適用於負整數、小數、負數和小數

^(-?\d+\.)?-?\d+$

允許:

23425.23425
10.10
100
0
0.00
-100
-10.10
10.-10
-10.-10
-23425.23425
-23425.-23425
0.234

添加"-" minus后跟? quantifier [0-9] expression前面的? quantifier應該起作用。

-?[0-9]

以供參考

  • ^b - ^ quantifier任何以“b”開頭的字符串的^ quantifier匹配
  • c? - ? quantifier ? quantifier匹配 0 或 1 次“c”
  • [0-9] - 查找[] brackets之間的任何字符
  • \\d - 從0-9找到一個數字
  • d* - * quantifier匹配零次或多次出現的“d”
  • \\. - 匹配一個"." character "." character
  • z+ - + quantifier匹配一次或多次出現的“z”
  • e$ - $ quantifier匹配任何以“e”結尾的字符串

希望,這將有助於理解問題中發布的正則表達式

對於我能想到的所有情況,只需/\d/按預期工作:

 let ns = { regex: { num: /\d/ } } for (let i of [-2, -1, 0, 1, 2, 'one', 'negative one', Math.PI, Math.E, (42 * -1), (42 / -1), '-1', '0', '1', 1.01, -1.01, .1, -.1, Math.sqrt(42)]) { console.log(ns.regex.num.test(i) + ': ' + i); }

如需更多Math樂趣,請查看https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM