سؤال
أحاول كتابة تعبير منتظم للاختبار كسلسلة. يجب أن تبدأ السلسلة أو تنتهي بطابع أبجدي رقمي.
على سبيل المثال.
test - OK
test$ - OK
$test - OK
$ - not OK
$test$ - not OK
يمكنني اختبار البداية بـ ^\w.*$
والنهاية مع ^\w.*$
.
لكن لا يمكنني الجمع بينهم في شيء مثل ^.*\w$ | ^\w.*$
.
هل لدى أي شخص أي أفكار أو حتى regex أفضل لهذا الغرض؟
المحلول
هذا يجب أن يعمل:
^\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
لا تنتمي إلى StackOverflow