[英]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})?$
接受正或負十進制值。
如果你有這個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.