2016-05-06 6 views
1

Я пытаюсь выяснить следующее регулярное выражение:Регулярное выражение не совпадающей строки

/^[0-9]{2}-[0-9]{2,3}[a-zA-z]{0,1}/g 

В моем примере.
Следующие должны пройти: 00-45, 00-333, 33-333a, 55-34a Следующие должны терпеть неудачу: 33-3333, 22-22dd, 22-2233

Вот мой скриншот:

enter image description here

Но один раз, который должен потерпеть неудачу, не удалось. В моем коде яваскрипта я просто сделать тест:

var regExp = new RegExp(exp); 
if(regExp.test(test1)) 
    alert('pass'); 
else 
    alert('fail'); 

Есть ли способ для регулярного выражения, чтобы проверить всю строку? Пример 33-3333 проходит из-за 33-333, но поскольку есть еще 3, я бы хотел, чтобы он потерпел неудачу, так как четвертый 3 будет проверен против правила символа?

+0

использовать '^' и '$' для указания начала и окончания строки – Fabricator

+0

Вы забыли glob? - 'новый RegExp (exp, 'g');'? –

ответ

3
  1. Вы отсутствует конечный якорь $ в вашем входе
  2. A-z внутри класса символов будут соответствовать нежелательным символам, а также, вы на самом деле нужно A-Z
  3. {0,1} может быть сокращены до ?

Попробуйте это regex:

/^[0-9]{2}-[0-9]{2,3}[a-zA-Z]?$/ 

RegEx Demo

+1

Вы такая скорость. :) – mkHun

+1

Спасибо всем, кажется, я забыл $. Мне нравится ваша более короткая версия удаления последнего {0,1} для просто? – adviner

Смежные вопросы