2010-11-05 21 views
0

J'essaie d'écrire une expression régulière à tester en tant que chaîne. La chaîne doit commencer ou se terminer par un caractère alphanumérique.Expression régulière ou opérateur

par ex.

test - OK 
test$ - OK 
$test - OK 
$ - not OK 
$test$ - not OK 

je peux tester le début avec ^\w.*$ et la fin avec ^\w.*$.

Mais je n'arrive pas à les combiner en quelque chose comme ^.*\w$ | ^\w.*$.

Est-ce que quelqu'un a des idées ou même une meilleure regex à cette fin?

+3

Quel moteur regex utilisez-vous? – JaredPar

+0

J'utilise C# .NET, mais nous utilisons l'extension xVal qui ajoutera une fonction javascript pour tester la chaîne côté client. –

Répondre

0

Cela devrait fonctionner:

^\w.*|.*\w$ 
+0

J'ai utilisé celui-ci, car c'était le plus court. Merci à toutes les réponses cependant. –

+0

'^ \ w | \ w $' est comme 4 caractères plus courts :) – gnarf

2

Les éléments suivants doivent travailler:

/^\w|\w$/ 

Bien que \w comprend _ donc si vous ne souhaitez que des lettres et des chiffres:

/^[0-9a-zA-Z]|[0-9a-zA-Z]$/ 

var tests=['test', 'test$', '$test', '$', '$test$']; 
var re = /^\w|\w$/; 
for(var i in tests) { 
    console.log(tests[i]+' - '+(tests[i].match(re)?'OK': 'not OK')); 
} 

// Results: 
test - OK 
test$ - OK 
$test - OK 
$ - not OK 
$test$ - not OK