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.


"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 ^...$

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
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.