Saya menggunakan regex berikut
^[a-zA-Z0-9\',!;\?\$\^:\\\/`\|~&\" @#%\*\{}\(\)_\+\.\s=-]{1,1000}$
Saya tahu itu jelek, tapi sejauh ini memenuhi tujuannya selain garis miring terbalik tidak diizinkan seperti yang saya kira seharusnya karena lolos, saya juga mencoba \\
alih-alih \\\
tetapi hasil yang sama. Ada ide?
Jawaban:
Jika Anda meletakkan ini dalam sebuah string di dalam sebuah program, Anda mungkin benar-benar perlu menggunakan empat garis miring terbalik (karena parser string akan menghapus dua di antaranya saat "melepaskan diri" untuk string tersebut , dan kemudian ekspresi reguler membutuhkan dua untuk escaped regex backslash).
Misalnya:
diartikan sebagai ...
diartikan sebagai ...
diartikan sebagai ekspresi reguler yang cocok dengan satu garis miring terbalik.
Bergantung pada bahasanya, Anda mungkin dapat menggunakan bentuk kutipan yang berbeda yang tidak mengurai urutan escape untuk menghindari penggunaan sebanyak mungkin - misalnya, dengan Python:
Bagian
r
depan tanda kutip menjadikannya string mentah yang tidak mengurai pelolosan garis miring terbalik.sumber
new RegExp('\\\\\\d');
.Jika bukan literal, Anda harus menggunakan
\\\\
sehingga Anda mendapatkan\\
yang berarti garis miring terbalik yang lolos.Itu karena ada dua representasi. Dalam representasi string regex Anda, Anda memiliki
"\\\\"
, Yang akan dikirim ke parser. Parser akan melihat\\
yang diinterpretasikan sebagai garis miring terbalik yang valid (yang cocok dengan satu garis miring terbalik).sumber
Garis miring terbalik
\
adalah karakter pelolos untuk ekspresi reguler. Oleh karena itu, garis miring terbalik ganda memang berarti garis miring terbalik tunggal.\ (backslash) followed by any of [\^$.|?*+(){} escapes the special character to suppress its special meaning.
ref: http://www.regular-expressions.info/reference.html
sumber
Dari http://www.regular-expressions.info/charclass.html :
Anda menulis regex dalam bahasa apa?
sumber
Solusi ini memperbaiki masalah saya saat mengganti tag br ke '\ n'.
sumber