Regex untuk ruang memisahkan nilai angka 60 persis

0

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.

Nilesh
sumber
"ini akan membuat browser mogok" - browser sendiri tidak mendukung ekspresi reguler, di mana Anda ingin menggunakan regex?
Máté Juhász
Saya menggunakan regex dalam kode javascript ... jadi ketika dipanggil browser, crash
Nilesh
Dengan objek dan kode apa Anda memanggilnya?
Seth
memanggilnya dalam angularJS ng-pola untuk bidang teks input ..
Nilesh

Jawaban:

1

Beberapa masalah dengan ekspresi Anda:

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

  • kenapa kamu punya \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.]+,
  • atau termasuk ruang utama dan belakang:
    \s*([0-9.]+\s+){59}[0-9.]+\s*,
  • dan secara opsional Anda dapat menyertakannya ^...$
Máté Juhász
sumber
Terima kasih..Apakah 100% benar .. tapi bolehkah saya tahu bisakah kita memeriksa atau memangkas spasi putih terkemuka dan tertinggal di regex? seperti "90 43 ...."
Nilesh
kamu, saya telah memperbarui jawaban saya
Máté Juhász
Saya senang itu berhasil! tolong pertimbangkan menerima jika Anda merasa itu menyelesaikan masalah Anda ( superuser.com/help/someone-answers ).
Máté Juhász