Регулярное выражение или оператор

Я пытаюсь написать регулярное выражение для проверки в виде строки. Строка должна начинаться или заканчиваться буквенно-цифровым символом.

например.

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

Я могу проверить начало с ^\w.*$ и конец с ^\w.*$,

Но я не могу объединить их в нечто вроде ^.*\w$ | ^\w.*$,

У кого-нибудь есть какие-нибудь идеи или даже лучшее регулярное выражение для этой цели?

2 ответа

Решение

Это должно работать:

^\w.*|.*\w$

Следующее должно работать:

/^\w|\w$/

Хотя \w включает в себя _ так что если вам нужны только буквы и цифры:

/^[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
Другие вопросы по тегам