Saya memiliki regex ini /^(0|[1-9]\d*)(\.\d+)?$/

Ini memungkinkan semua angka desimal dan integer.

Yang saya butuhkan untuk menjumlahkan semua angka yang kurang dari 91.

Bagaimana saya bisa menerapkan itu?

Tolong bantu

1
Vardan Hambardzumyan 12 Mei 2021, 12:21

3 jawaban

Jawaban Terbaik

Bilangan bulat atau desimal kurang dari 91 dapat dicapai seperti ini:

^(?:0|[1-8]\d?|90?)(?:\.\d+)?$

Lihat demo online.

  • ^ - Mulai jangkar baris.
  • (?: - Buka grup non-tangkap pertama:
    • 0|[1-8]\d?|90? - Mencocokkan nol atau 1-8 dan digit opsional atau sembilan dengan nol opsional.
    • ) - Tutup grup non-tangkap pertama.
  • (?: - Buka grup non-tangkap ke-2:
    • \.\d+ - Titik literal dan 1+ digit.
    • )? - Tutup grup non-tangkap ke-2 dan jadikan itu opsional.
  • $ - Jangkar garis akhir.

Edit: Jika Anda tidak keberatan mencocokkan nol ganda sesuai "00" atau "00.0000", Anda dapat menggunakan:

^(?:\d0?|[1-8]\d?)(?:\.\d+)?$

Atau, bahkan lebih sedikit bertele-tele, menggunakan pandangan negatif ke depan:

^(?!9[1-9])\d\d?(?:\.\d+)?$
5
JvdV 12 Mei 2021, 09:54

Bagaimana dengan ini?

^(90|[0-8][0-9])$

Cukup cocokkan 90 atau 00 hingga 89.

2
Zasda Yusuf Mikail 12 Mei 2021, 09:28

Dengan sampel yang Anda tunjukkan, silakan coba mengikuti.

^(?:[0-9]|[0-8][0-9]|90)(?:\.\d+)?$

Demo online untuk regex di atas

ATAU dapat dipersingkat sebagai berikut juga:

^(?:[0-8]?[0-9]|90)(?:\.\d+)?$

Penjelasan: Menambahkan penjelasan rinci di atas.

^(?:                   ##Matching from starting of value and starting a non-capturing group here.
 [0-9]|[0-8][0-9]|90   ##Matching either 0 to 9 OR till 89 OR 9 here.
)                      ##Closing non-capturing group here.
(?:\.\d+)?$            ##In a non-capturing group matching dot followed by 1 or more digits keep it optional at the last of value.


Solusi bonus: Berdasarkan asumsi saya saja, jika Anda ingin mencocokkan nol tambahan tetapi masih kurang dari 91 maka coba ikuti.

^(?:0+)?(?:[0-9]|[0-8][0-9]|90)(?:\.\d+)?$
4
RavinderSingh13 12 Mei 2021, 09:59