Adakah yang bisa membantu saya untuk menulis regex untuk 60 nilai angka yang dipisahkan ruang? Nilai bisa berupa angka float atau bilangan bulat.
Misalnya: "90,90 78,54 34 ...." (nilai 60) atau "89,43 90 34 ...." (nilai 60).
Saya mencoba yang berikut
^(\s*([0-9]|[0-9.])+\s*){60}$
Tapi, ini menyebabkan browser macet.
Jawaban:
Beberapa masalah dengan ekspresi Anda:
^(\s*([0-9]|[0-9.])+\s*){60}$
\s*
baik di awal maupun di akhir? Salah satunya (pada akhirnya) sudah cukup\s*
: mengapa*
? Spasi bukan opsional, harus ada spasi putih di antara angka (jika Anda ingin membahas situasi di mana angka terakhir adalah akhir dari string, maka Anda dapat menggunakan([0-9.]+\s+){59}[0-9.]+
([0-9]|[0-9.])
-[0-9.]
akan cukup, menghemat banyak langkah untuk mesin regex^...$
- apakah Anda ingin memilih 60 angka, atau hanya memvalidasi string yang terdiri dari 60 angka? (pendekatan Anda menunjukkan yang kedua).Jadi ungkapan yang benar adalah:
([0-9.]+\s+){59}[0-9.]+
,\s*([0-9.]+\s+){59}[0-9.]+\s*
,^...$
sumber