RegEx untuk menemukan dua atau lebih karakter yang berurutan


99

Saya perlu menentukan apakah sebuah string berisi dua atau lebih karakter alfa yang berurutan. Dua atau lebih [a-zA-Z]berdampingan. Contoh:

"ab" -> valid
"a1" -> invalid
"a b" -> invalid
"a"-> invalid
"a ab" -> valid
"11" -> invalid

Jawaban:


207

Ini harus melakukan trik:

[a-zA-Z]{2,}

Mungkin {2}tanpa koma juga harus bekerja, bukan?
Alexander Mills

17
Alexander, hanya untuk membersihkan beberapa hal: {2} berarti panjangnya harus 2. {2,} berarti panjang ekspresi dapat => 2
Shmarkus

1

Secara pribadi (sebagai nooby) saya telah menggunakan:

[0-9][0-9]+.

Tapi yang dari Simon, jauh lebih baik! = D


0

[a-zA-Z] {2,} tidak berfungsi untuk dua atau lebih karakter berurutan yang identik. Untuk melakukan itu, Anda harus menangkap karakter apa pun dan kemudian mengulangi tangkapan seperti ini:

(.) \ 1

Tanda kurung menangkap. yang mewakili karakter apa pun dan \ 1 adalah hasil dari penangkapan - pada dasarnya mencari pengulangan karakter tersebut secara berurutan. Jika Anda ingin lebih spesifik tentang karakter apa yang ingin Anda temukan identik secara berurutan, cukup ganti "karakter apa pun" dengan kelas karakter ...

([a-zA-Z]) \ 1

Menemukan huruf kecil atau besar yang berulang secara berurutan. Cocok di "abbc123" dan bukan "abc1223". Untuk memberikan spasi di antara mereka (yaitu a ab), maka sertakan spasi opsional di regex antara karakter yang ditangkap dan pengulangan ...

([az] AZ]) \ s? \ 1


Saya yakin Anda salah memahami pertanyaan karena ini tentang dua huruf. Regex Anda untuk kasus yang berbeda: dua huruf yang mirip!
csabinho

-4

Saya cukup yakin Anda bisa menggunakan [Az] daripada [a-zA-Z] untuk mendapatkan karakter alfa huruf besar dan kecil http://www.w3schools.com/jsref/jsref_obj_regexp.asp


22
-1: Ini adalah contoh bagus lainnya mengapa Anda tidak boleh menggunakan w3schools untuk referensi atau pendidikan. [A-z]cocok lebih dari sekedar huruf. Secara khusus, ini juga cocok dengan tanda kurung siku, garis miring terbalik, tanda sisipan, garis bawah, dan backticks.
Tim Pietzcker

Memang, yang dikatakan @TimPietzcker benar; karakter yang dia sebutkan berada di antara Zdan a, jadi akan (secara keliru) dimasukkan dalam pola seperti itu. Saya setuju dengan rekomendasi: Jangan gunakan w3schools! Ada banyak informasi yang agak buruk seperti ini.
Andrew Barber

5
Aduh tenaga pertama di Stack, itu lebih menyengat dari yang saya kira. Jadi dengan memasukkan Az itu cocok dengan semuanya dari [AZ sekelompok hal yang tidak saya inginkan dan az] semua kode karakter antara huruf besar dan tanpa huruf besar? danshort.com/ASCIImap
Kevin

jadi saya bisa mengatakan sesuatu seperti [! - +]? Juga apakah ada cara untuk mengakses kode karakter di dalam regex seperti [65-90] yang akan sama dengan [AZ]?
Kevin

@Kevin [65-90]akan mencocokkan 5- 9(yang juga mencakup 6) dan 0!
csabinho
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.