2010-11-05 20 views
129

J'ai besoin d'une regex pour correspondre si n'importe où dans une phrase il n'y a PAS de < ou>.Regex - Ne contient pas certains caractères

Si < ou> sont dans la chaîne alors il doit retourner false.

J'ai eu un succès partiel avec cela, mais seulement si mon <> sont au début ou à la fin:

(?!<|>).*$ 

J'utilise .Net si cela fait une différence.

Merci pour l'aide.

Ajouter sur la question:

Je me demandais, comment voulez-vous modifier le dessous de regex pour revenir seulement faux si le texte comprend une étiquette comme <test>?

Répondre

224
^[^<>]+$ 

Le caret dans la classe de caractères ([^) signifie correspondre à quelque chose, mais, si cela signifie, au début de chaîne, puis un ou plusieurs de quoi que ce soit, sauf < et >, puis la fin de la chaîne.

+0

Que signifie le premier signe? Est-ce que cela ne signifierait rien qui ne contienne pas ces caractères ... ce qui signifie uniquement les chaînes qui contiennent ces caractères? – RobKohr

+3

Le premier signe signifie début de chaîne. Le dollar signifie, fin de chaîne. –

+1

@PhilipRego Attention aux caractères spéciaux: le shell interprète certains d'entre eux. Regardez pour voir si vous avez maintenant un fichier nommé '] + $' dans votre répertoire. Mettez l'ensemble de l'expression rationnelle entre guillemets simples pour le faire fonctionner. –

30

vous allez ici:

^[^<>]*$ 

Cela permettra de tester pour la chaîne qui n'a pas < et pas >

Si vous voulez tester une chaîne qui peut avoir < et >, mais aussi avoir autre chose que vous devez utiliser juste

[^<>] (or ^.*[^<>].*$) 

[<>] signifie l'un des < ou > et [^<>] signifie tout ce qui n'est pas de < ou >.

Et bien sûr le link obligatoire.

+0

Cela ne fonctionne pas. Votre '.' va correspondre à'> 'et' <'. – codaddict

+0

J'ai ajouté le point par erreur. Pardon. Merci de l'avoir remarqué. –

+0

Merci pour l'aide. Quand je branche celui-ci il casse dans asp.net avec une erreur de serveur 500. – SetiSeeker