2010-11-02 4 views
1

Que serait le RegExp javascript pour tout ce qui n'est pas un - ou un caractère de mot? J'ai essayé [^-\w], mais j'ai eu une erreur de console. Des idées?RegExp pour tout ce qui n'est pas un - ou un caractère de mot

+0

QUELLE ERREUR? Quand vous allez voir votre médecin, lui dites-vous que vous êtes malade, point final? –

+0

essayez d'escpaper le -? comme \ - – rapadura

+0

si je l'utilise dans .replace() va-t-il remplacer tout sauf les mots et les tirets dans une chaîne? – chromedude

Répondre

4

Avez-vous mis en avant des barres obliques?

var rex = /[^\w-]/; 

fonctionne pour moi dans tous les navigateurs testés. (Note: je mets le - à la fin comme une bonne pratique, il ne se confond avec un jeton de gamme.)

+1

Pour une raison quelconque, j'ai oublié ça. Il ne montre aucune erreur maintenant il ne fait tout simplement pas ce que je veux qu'il fasse. Doit être un bug dans une autre partie du code alors. – chromedude

+0

Quelle est la fonction que vous utilisez dans quel contexte? 'String.replace()', 'String.match',' RegExp.test', ... sur la chaîne ...? – Lekensteyn

+0

String.replace() – chromedude

1

- est un caractère spécial dans les classes de caractères, indiquant les plages de caractères. Il devrait être échappé pour être interprété comme un littéral '-'. Donc, pour ne correspond pas à des mots et des -, utilisez:

/[^\w\-]/ 
+0

Oui vous pouvez. Essayez-le. –

+0

Sauf que l'OP ne veut PAS faire correspondre le résultat. – Robusto

+0

'\ w' est absolument parfait dans une classe de caractères. Il est souvent utilisé de cette manière pour raccourcir les expressions régulières. par exemple. '[a-zA-Z_0-9]' peut être réécrit comme '[\ w \ d]'. –

0

essayez ce qui suit dans votre console préférée

/[-\w]/.test('-') 
/[-\w]/.test('word') 
/[-\w]/.test('-w') 
0

Je crois que vous avoir l'expression régulière correcte - rappelez-vous juste d'inclure dans les barres obliques:/[^ - \ w] /:

"-".match(/[^-\w]/) 
null 
"a".match(/[^-\w]/) 
null 
"0".match(/[^-\w]/) 
null 
" ".match(/[^-\w]/) 
[" "] 
Questions connexes