2012-06-19 4 views
0

possible en double:
How to escape regular expression in javascript?Regex amicale URL

Je suis en train de créer une dynamique regex pour sélectionner basé sur un segment URL ou l'URL complète.

Par exemple, je dois obtenir var.match(/http:\/\/www.something.com\/something/)

Le texte à l'intérieur des match() doit être converti afin que les caractères spéciaux ont \ devant eux comme par exemple "\/". Je n'ai pas pu trouver une fonction qui convertit l'URL pour le faire? Est-ce qu'il y a un?

Si non, quels caractères nécessitent un \ devant?

+0

Vous êtes à la recherche d'une fonction d'échappement expression régulière JavaScript et/ou pour ce que les personnages sont significatifs dans un regex JS? –

+2

La liste est '[.? * +^$ [\] \\() {} | -]' De http://stackoverflow.com/questions/2593637/how-to-escape-regular- expression-en-javascript –

Répondre

2

J'utilise ceci pour échapper à une chaîne lors de la génération d'une expression rationnelle dynamique:

var specials = /[*.+?|^$()\[\]{}\\]/g; 
var url_re = RegExp(url.replace(specials, "\\$&")); 
+0

@djechlin. Ce n'est pas une raison de downvote (si c'était vous.) – gdoron

+0

merci c'est exactement ce que je cherchais – ama2

0

() [ ] ? *^$ \ . + | et dans votre cas, / puisque vous l'utilisez comme délimiteur dans la correspondance.

Plus d'infos principalement pour anticiper les commentaires et les publications downvotes: Je ne sais pas vraiment d'où vient - en tant que personnage spécial. Ce n'est spécial que lorsque vous entrez dans les classes de caractères [ et ] que vous échappez déjà. Si vous souhaitez inclure des caractères qui sont parfois spéciaux (ce qui n'est pas le PO) qui inclurait également les caractères anticipés/derrière, qui comprennent =, < et >.

+0

Vous avez oublié '{' et '}'. – Ryan

+0

@minitech dans JS? Je sais que dans grep, il faut en fait donner un '\\' précédent pour faire quelque chose, je pense que c'est un egrep dans lequel ils ne le font pas. – djechlin

+0

'j {1,5}' correspond à 1-5 instances de 'j'. Non, il n'a pas besoin d'un '' \ '' précédent, au moins en JavaScript, ni dans aucune autre langue que j'ai jamais utilisée ... pensez-vous à un usage différent pour '{}'? – Ryan