2014-12-22 2 views
1

Я пытаюсь заставить регулярное выражение работать в Livecycle. У меня есть код под событием изменения текстового поля и языка, установленного на JavaScript. Код:Ошибка Livecycle RegEx с длиной символа

if (xfa.event.newText.match(/^[0-9]{5}$/))  
{ 
xfa.event.change = ""; 
} 

Проблема заключается в текстовое поле принимает любое количество алфавитно-цифровых символов или только 4 цифровых символов.

Это первая часть регулярного выражения, полная часть будет (EC + 3 цифры, C + 4 цифры, 5 цифр) /[e][c][0-9]{3}|[c][0-9]{4}|[0-9]{5}/i, но я хотел сначала проверить функциональность.

+0

Какая у вас ошибка? Мне это кажется прекрасным. – Halcyon

+0

Это не дает мне ошибку, это просто позволяет мне вводить альфа-символы без ограничений ИЛИ только 4 числовых символа. – turkaffe

+0

О, добавьте '^' и '$' в ваше регулярное выражение. Вставить '|' не соответствует желаемому, добавить некоторые скобки '()'. – Halcyon

ответ

1

Ваше регулярное выражение в основном говорит: «Если новый текст после внесенного изменения равен ##### (где # - некоторое число), то это не позволяет это изменить». Это означает, что он позволит любые другие изменения, включая буквы и т. Д.

Так что это в значительной степени противоположно тому, что вы хотите видеть.

Событие изменения срабатывает каждый раз, когда пользователь вводит другой символ, поэтому, если вы хотите, чтобы это работало, он должен принимать каждый шаг символов. Пример - E в порядке, EC в порядке, EC1 в порядке, но ECC не в порядке.

Редактировать - сначала я собирался рекомендовать вам проверить это в событии exit/validate, а не на изменении, но я подумал об этом немного больше, и шаблон регулярного выражения для форматирования при изменении на самом деле не так уж плох. Если вы поместите этот код в событие изменения, он должен помешать пользователю вводить все, что не соответствует одному из этих трех форматов.

EC###, C####, #####

if (!xfa.event.newText.match(/^(e|ec|ec\d{1,3}|c|c\d{1,4}|\d{1,5})$/i)) 
{ 
    xfa.event.change = ""; 
} 

(шаблон чувствителен к регистру, если вы хотите его чувствительно к регистру ИЗВЛЕКИТЕ I в конце.)