2011-06-15 2 views
0

s'il vous plaît quelqu'un peut me aider à transformer ce modèle d'expression régulière de javascript pour C#s'il vous plaît quelqu'un peut me aider à convertir ce modèle d'expression régulière de javascript pour C#

var phonePattern = /^(([^\.\-\,a-wy-z]([\(]?(\+|[x])?\d+[\)]?)?[\s\.\-\,]?([\(]?\d+[\)]?)?[\s\.\-\,]?(\d+[\s\.\-\,]?)+[^\.\-\,a-z])|((\+|[x])?\d+))$/i 

i besoin de valider le numéro de téléphone que je vais prendre la valeur de textbox et je vais le comparer avec le modèle de regex j'ai besoin de convertir ce modèle spécifiquement parce que ce modèle traitera presque la plupart des modèles de téléphone de pays comme UK, US, eurpoe, inde etc.

ceci est mon C# code

Regex REphone = new Regex(@" c# pattern here"); 
if (REphone.IsMatch(TextBox_Phone.Text)) { 
    // ... 
} else { 
    // ... 
} 
+0

Qu'avez-vous essayé pour le .NET regex jusqu'à présent? Et de quelle façon ça ne marche pas? – Richard

+0

Regex REphone = nouveau Regex (@ "^ (([^ \. \ - \, a-wy-z] ([\ (]? (\ + | [X])? \ D + [\)]?)? [\ s \. \ - \,]? ([\ (]? \ d + [\)]?)? [\ s \. \ - \,]? (\ d + [\ s \. \ - \,] ?) + [^ \. \ - \, az]) | ((\ + | [x])? \ d +)) $ ", J'essaie cela mais ne fonctionnait pas toujours continuer même si je suis entré dans les bonnes valeurs –

Répondre

3
new Regex(@"^(([^\.\-\,a-wy-z]([\(]?(\+|[x])?\d+[\)]?)?[\s\.\-\,]?([\(]?\d+[\)]?)?[\s\.\-\,]?(\d+[\s\.\-\,]?)+[^\.\-\,a-z])|((\+|[x])?\d+))$", 
     RegexOptions.IgnoreCase); 

Le modèle lui-même est le même, mais figurer entre @", " au lieu de /, /.

RegexOptions.IgnoreCase rend la correspondance insensible à la casse, ce qui équivaut à l'indicateur i à la fin de votre expression littérale JavaScript.

+0

merci veeeeeeeeeeeeeeeeeeeeeeeeery beaucoup cela fonctionne vraiment –

+0

@fatma mansour: Si la réponse de Daniel a répondu à votre question de manière satisfaisante, vous devriez vraiment envisager de le marquer comme –

+0

ok merci je l'ai accepté –

1

JavaScript délimite la regex en utilisant / et C# n'utilise pas de délimiteurs (vous le transmettez sous la forme d'une chaîne, donc techniquement vous pourriez dire qu'il est délimité par des guillemets "). En outre, dans les chaînes C#, n'oubliez pas que vous devez éviter les barres obliques inverses de \ à \\.

Ainsi, votre expression regex ressemblerait à ceci -

"^(([^\\.\\-\\,a-wy-z]([\\(]?(\\+|[x])?\\d+[\\)]?)?[\\s\\.\\-\\,]?([\\(]?\\d+[\\)]?)?[\\s\\.\\-\\,]?(\\d+[\\s\\.\\-\\,]?)+[^\\.\\-\\,a-z])|((\\+|[x])?\\d+))$" 

Si vous allez passer dans une chaîne littérale (en utilisant le @ devant lui), alors vous n'avez pas besoin d'échapper les antislashs.

+0

J'ai essayé le @ et le \\ ça ne marche pas avec moi est cette syntaxe valide dans C#? –

Questions connexes