Question

Je suis en train d'écrire une expression régulière pour tester sous forme de chaîne. La chaîne doit commencer ou se terminer par un caractère alphanumérique.

par exemple.

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 ne peux pas sembler les combiner en quelque chose comme ^.*\w$ | ^\w.*$.

Est-ce que quelqu'un a des idées ou même un meilleur regex à cet effet?

Était-ce utile?

La solution

Cela devrait fonctionner:

^\w.*|.*\w$

Autres conseils

Ce qui suit devrait fonctionner:

/^\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
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top