2015-06-24 3 views
-1

Я пытаюсь проверить шаблон 5 characters - 5 characters - 5 characters с Javascript, и я хочу, чтобы он сбой, если между тире имеется более или менее символов. Мой тест выглядит следующим образом:Javascript RegExp test

var patterns = new RegExp("[2-46-9A-DF-HJKMP-RTVW-YX]{5}-[2-46-9A-DF-HJKMP-RTVW-YX]{5}-[2-46-9A-DF-HJKMP-RTVW-YX]{5}","gi"); 

if(patterns.test(fkLicense) == true) { 
    alert('good'); 
} else { 
    alert('bad'); 
} 

Мой вопрос не является, независимо от того, что я установить значение fkLicense к, тест не пройден. Любая помощь будет оценена.

+0

Что именно вы хотите, чтобы эти группы символов представляли –

+0

«Независимо от того, для чего я установил значение fkLicense, тест проходит». - это правда? Пустая строка? Номер 1? Что, если это 11111-11111-11111? –

+0

Группы представляют действительные символы. – Jecker

ответ

1

Я не уверен, что вы пытаетесь, чтобы соответствовать, но проблема в том, что вам нужно anchor регулярное выражение, и это намного проще использовать регулярное выражение буквального здесь вместо того, чтобы ...

var patterns = /^ .... $/i 

eval.in

+0

Ваше разрешение также работает. Моя проблема была вызвана тем, как я получал значение fkLicense. – Jecker

+0

Я не понимаю, как привязка будет отличаться. Без привязки он может соответствовать строкам с дополнительными материалами спереди и снаружи, но он все равно должен соответствовать строкам, которые OP хочет совместить. Почему это принятый ответ, так как сам ОП сказал, что проблема была опечаткой? –

+0

Я согласен, что OP действительно заявлял, что это была опечатка и исправила ее, но также и OP: «Я хочу, чтобы она завершилась с ошибкой, если между тире имеется более или менее 5 символов», если вы удалили привязки, она возвращает true для строк типа «22222» -22222-2222222' – hwnd