DEV Community

Eris Sulistina
Eris Sulistina

Posted on • Edited on

Regex di CSS

Kalian tahu Regex kan? Itu loh tulisan random yang suka ada di baris kode untuk validasi tulisan. Regex bisa diterapkan di HTML untuk validasi input dengan bantuan attribute pattern seperti:

<input type="text" name="email" pattern="^[\w.-]+@[\w.-]+\.\w{2,}$" required>
Enter fullscreen mode Exit fullscreen mode

Selain di html, Regex paling sering digunakan di bahasa pemrograman sehingga lebih kuat dan fleksibel penggunaannya. Contoh di bahasa Javascript:

const regex = /^[A-Z]{2}\d{4}$/;
const test = "AB1234";
console.log(regex.test(test)); // true
Enter fullscreen mode Exit fullscreen mode

Contoh lain di bahasa PHP:

$pattern = "/^[a-z0-9_]{3,16}$/";
$username = "user_123";
if (preg_match($pattern, $username)) {
  echo "Username valid";
}
Enter fullscreen mode Exit fullscreen mode

Apakah kalian tahu kalau Regex bisa diterapkan di CSS? Kalau kalian tidak tahu, coba tebak menurut kalian Regex di CSS diterapkan di mana? Apakah digunakan sebagai validasi juga seperti di HTML dan bahasa pemrograman? Jawabannya adalah Tidak ada Regex di CSS, tapi ada Attribute selectors yang mengadopsi sebagian Regex. Pada Attribute selectors hanya mendukung 5 Regex operator *, $, ~, |, dan ^. Setiap operator tersebut berfungsi sama seperti di Regex yaitu sebagai validasi.


Mengenal Attribute Selectors

Attribute Selectors adalah salah satu selector di CSS yang menargetkan attribute html. Aturan penulisan attribute adalah diapit oleh kurung siku. Contoh:

/* semua elemen yang punya atribut x-data */
[x-data] {
  outline-color: cyan;
}

/* semua elemen <a> yang punya atribut href */
a[href] {
  color: blue;
}
Enter fullscreen mode Exit fullscreen mode

Jenis-jenis Attribute Selectors

1. Existence Selector β†’ [attr]

Memilih elemen yang punya atribut tersebut, tanpa peduli nilainya.

/* semua elemen <img> yang punya atribut alt */
img[alt] {
  border: 2px solid green;
}
Enter fullscreen mode Exit fullscreen mode

2. Exact Match β†’ [attr="value"]

Memilih elemen yang punya atribut tersebut dengan value sama persis.

/* semua elemen <input> yang punya atribut type dengan value text */
input[type="text"] {
  background: #eee;
}
Enter fullscreen mode Exit fullscreen mode

3. Prefix Match β†’ [attr^="value"]

Memilih elemen yang punya atribut tersebut dengan value diawali.

/* semua elemen <a> yang punya atribut href dengan value diawali https */
a[href^="https"] {
  color: green;
}
Enter fullscreen mode Exit fullscreen mode

4. Suffix Match β†’ [attr$="value"]

Memilih elemen yang punya atribut tersebut dengan value diakhiri.

/* semua elemen <a> yang punya atribut href dengan value diakhiri .pdf */
a[href$=".pdf"] {
  color: red;
}
Enter fullscreen mode Exit fullscreen mode

5. Substring Match β†’ [attr*="value"]

Memilih elemen yang punya atribut tersebut dengan value mengandung tulisan.

/* semua elemen yang punya atribut class dengan value mengandung tulisan btn */
[class*="btn"] {
  background: pink;
}
Enter fullscreen mode Exit fullscreen mode

Contoh 4 elemen yang akan menerapkan style di atas:

<button class="btn">Klik aku!</button>
<button class="btn-primary">Klik aku!</button>
<button class="sm-btn">Klik aku!</button>
<button class="ghost-btn-danger">Klik aku!</button>
Enter fullscreen mode Exit fullscreen mode

6. Word Match β†’ [attr~="value"]

Memilih elemen yang punya atribut tersebut dengan value mengandung kata.

/* semua elemen yang punya atribut class dengan value mengandung kata btn */
[class~="btn"] {
  padding: 8px;
}
Enter fullscreen mode Exit fullscreen mode

Contoh 2 elemen yang akan menerapkan style di atas:

<button class="btn">Klik aku!</button>
<button class="btn primary">Klik aku!</button>
Enter fullscreen mode Exit fullscreen mode

7. Dash Match β†’ [attr|="value"]

Memilih elemen yang punya atribut tersebut dengan value sama persis atau diawali lalu diikuti dengan strip (-).

/* semua elemen yang punya atribut lang dengan value sama persis atau diawali en- */
[lang|="en"] {
  font-style: italic;
}
Enter fullscreen mode Exit fullscreen mode

Contoh 2 elemen yang akan menerapkan style di atas:

<button lang="en">click me!</button>
<button lang="en-US">click me!</button>
Enter fullscreen mode Exit fullscreen mode

Penutup

Semoga tulisan saya ini dapat mengupgrade kemampuan css kamu sebagai frontend developer.

Kalau kamu suka artikel ini, jangan lupa πŸ’– save, πŸ—¨οΈ comment, dan πŸ” share ke teman developer lainnya!

Sampai jumpa di tulisan berikutnya πŸ‘‹

Top comments (0)