ฉันจะจับคู่ตัวเลขติดลบด้วยนิพจน์ทั่วไปนี้ได้อย่างไร regex นี้ทำงานได้ดีกับค่าบวก แต่ฉันต้องการให้มันอนุญาตค่าลบเช่น -10, -125.5 เป็นต้น
^[0-9]\d*(\.\d+)?$
ขอบคุณ
ฉันจะจับคู่ตัวเลขติดลบด้วยนิพจน์ทั่วไปนี้ได้อย่างไร regex นี้ทำงานได้ดีกับค่าบวก แต่ฉันต้องการให้มันอนุญาตค่าลบเช่น -10, -125.5 เป็นต้น
^[0-9]\d*(\.\d+)?$
ขอบคุณ
คำตอบ:
คุณควรเพิ่มยัติภังค์ที่เป็นทางเลือกที่จุดเริ่มต้นโดยการเพิ่ม-?
( ?
เป็นตัวบ่งชี้ที่หมายถึงเหตุการณ์หนึ่งหรือศูนย์ ):
^-?[0-9]\d*(\.\d+)?$
ฉันตรวจสอบใน Rubular ด้วยค่าเหล่านี้:
10.00
-10.00
และทั้งคู่ตรงตามที่คาดไว้
^-?[0-9]\d*(\.\d+)?$
^[-+]?[0-9]\d*(\.\d+)?$
ตัวอย่างนิพจน์ทั่วไปบางส่วน:
จำนวนเต็มบวก :
^\d+$
จำนวนเต็มลบ :
^-\d+$
จำนวนเต็ม :
^-?\d+$
จำนวนบวก :
^\d*\.?\d+$
จำนวนลบ :
^-\d*\.?\d+$
จำนวนบวกหรือจำนวนลบ :
^-?\d*\.{0,1}\d+$
เบอร์โทร :
^\+?[\d\s]{3,}$
โทรศัพท์ที่มีรหัส :
^\+?[\d\s]+\(?[\d\s]{10,}$
ปี พ.ศ. 2443-2542 :
^(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+)?$
^-?\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+)?$
ซึ่งจะทำให้ได้ทั้งจำนวนเต็มบวกและลบ
ValidationExpression = "^ -? [0-9] \ d * (\ d +)? $"
ฉันมีการทดลองบางอย่างเกี่ยวกับ regex ใน django url ซึ่งต้องใช้จากจำนวนลบถึงบวก
^(?P<pid>(\-\d+|\d+))$
เรามาเน้นที่(\-\d+|\d+)
ส่วนนี้และไม่สนใจคนอื่น ๆ อัฒภาคนี้|
หมายถึงหรือใน regex จากนั้นค่าลบจะจับคู่กับ\-\d+
ส่วนนี้และค่าบวกในส่วนนี้\d+
สิ่งนี้ใช้ได้ผลสำหรับฉันโดยให้ทั้งจำนวนลบและบวก :
\-*\d+
หากใช้ C #:
Regex.Match(someString, @"\-*\d+").Value;
หากคุณมีสิ่งนี้val="-12XXX.0abc23"
และต้องการแยกเฉพาะเลขฐานสิบในกรณีนี้ regex ( ^-?[0-9]\d*(\.\d+)?$
) นี้จะไม่ช่วยให้คุณบรรลุ
นี่คือรหัสที่เหมาะสมกับ regex การตรวจจับที่ถูกต้อง:
var val="-12XXX.0abc23";
val = val.replace(/^\.|[^-?\d\.]|\.(?=.*\.)|^0+(?=\d)/g, '');
console.log(val);
เพียงเพิ่มโทเค็น 0 หรือ 1:
^-?[0-9]\d*(.\d+)?$
สำหรับจำนวนลบเท่านั้นนี่เหมาะ
^-\d*\.?\d+$
^[+-]?\d{1,18}(\.\d{1,2})?$
ยอมรับค่าทศนิยมที่เป็นบวกหรือลบ
นิพจน์ทั่วไปสำหรับตัวเลขจุดทศนิยมทางเลือกลบเพิ่มเติม:
^-?(\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