Su expresión regular solo necesita pequeños retoques. El guion se usa para formar rangos como A-Z
, por lo tanto, si desea hacer coincidir un guion literal, debe escapar con una barra diagonal inversa o moverlo al final de la lista. También necesita escapar de los corchetes porque son los delimitadores de la clase de caracteres. Entonces, al principio, deshazte de ese signo de interrogación y estarás en el negocio.
Regex symbolPattern = new Regex(@"[[email protected]#$%^&*()_+=\[{\]};:<>|./?,-]");
Si solo desea hacer coincidir los caracteres de puntuación ASCII, esta es probablemente la forma más sencilla. \W
coincide con el espacio en blanco y los caracteres de control además de la puntuación, y los compara de todo el rango Unicode, no solo ASCII.
Parece que le faltan algunos caracteres: la barra diagonal inversa, el apóstrofo y las comillas. La adición de los que da:
@"[[email protected]#$%^&*()_+=\[{\]};:<>|./?,\\'""-]"
Por último, es una buena idea utilizar siempre los literales C# 's literales de cadena (@"..."
) para expresiones regulares; te ahorra muchas molestias con las barras diagonales inversas. Las comillas se escapan al duplicarlas.
No desafiar a un gran maestro, pero ¿no te refieres a '\ W'? '\ w' (minúscula w) coincide con todos los caracteres de palabra. – Alan
Esto es casi completamente incorrecto. –
Sin embargo, obtuvo 3 votos positivos. – Alan