Una expresion regular es aquella que define un patron de ocurrencia dentro de una cadena. Se define entre / y /. Por ejemplo /patata/ encuentra la primera ocurrencia del patron patata en una cadena. Detras del ultimo / se pueden poner modificadores, por ejemplo g para global y i para insensitive. /patata/gi encuentra todas los patrones patata en una cadena. Incluyendo PaTaTA.
Tambien hay caracteres especiales. Por ejemplo ^ y $ para principio y final de linea. /^patata/ para "patata es mi nombre" y /patata$/ para "me llaman patata". Tambien se puede usar /^patata$/ para "patata" pero no para " patata ".
\d para digitos y \s para espacios. O sea que /\s\d\d\s/g encuentra todos los patrones de dos digitos separados por espacios. en " 23 45 678 2 5a" encuentra 2 ocurrencias. Y /9\d.\d\d\d.\d\d.\d\d/ encuentra cadenas en formato 91.762.34.87 (telefonos no moviles).
Poner detras de algo un + hace que la cadena pueda estar repetidas 1 o mas veces. /\d+/ encuentra 1 o mas digitos juntos. En "soy como 536 patatas de grande" encuentra el 536 y en "mi dni es 16.345.678" encuentra 16.
Claro que poner un * hace que se pueda encontrar 0 o mas veces. /pa(ta)*/g en la cadena "parece que hay patatas" encuentra pa y patata.
Tambien se pueden meter cosas entre [ ] y entonces solo encuentra 1 de ellas. /Ca[ms]a/ encuentra tanto Cama como Casa, pero no Camsa. Y esas cosas entre corchetes pueden ser tipo a-z (cualquier letra entre la a y la z). Por lo tanto /[a-zA-Z0-9\s]/g en la cadena "¡Parece que hay 9 patatas!" encuentra todo menos el ¡ y el ! porque encuentra cualquier cosa que sea minuscula mayuscula numero o espacio, y el g final hace que cuando encuentre un patron, siga buscando. Esto puede ser util para que en nuestro libro de visitas no nos cuelen cosas como comandos de PHP para leer /etc/passwd y cosas asi :)
Y ya se puede hasta negar lo que esta en los corchetes. /Co[^rj]o/ encuentra Como, Colo, Coco o Codo, pero no encuentra Coro ni Cojo. Entre llaves podemos poner uan repeticion. Por ejemplo si queremos validar dnis, que tienen 8 digitos, hariamos /\d{8}\ aunque claro, si alguien mete 9 digitos, pillaria los 8 primeros. Igual 8 digitos entre espacios es mas practico /\s\d{8}\s/.