Разрешить не более 3 последовательных символов whitespaae - PullRequest
0 голосов
/ 01 июля 2011

Я получу некоторую информацию от пользователя, использующего textarea.Но он не может набрать 3 последовательных пробела, поэтому я вложил этот код: D

function trim(myString)
{
 str = myString;
 str = str.replace(/\s/g, " ");
 alert(str.lastIndexOf("   "));
 if (str.lastIndexOf("   ")>-1)
 {
  alert("At most 3 consecutive white Space is allowed !");
  return false;
 }
 return myString.replace(/^[\s]+/,'').replace(/[\s]+$/,'').replace(/[\s]{2,}/,' ');
}

, но он не работает, вы можете помочь мне исправить ошибку?

Приведенный выше кодсначала заменяет все типы белых символов пробелом, затем он ищет 3 последовательных пробела, если он обнаруживается, то он показывает предупреждение!

Вы также можете взглянуть на Разрешить не более 2 новых строкв текстовой области

Ответы [ 2 ]

3 голосов
/ 01 июля 2011

Попробуйте использовать эту альтернативную упрощенную версию:

 function trim(str)
 {
      if (str.match(/\s\s\s+/))
      {
           alert("At most 3 consecutive white Space is allowed !");
           return false;
      }
     return str.replace(/\s\s\s+/g,' ');
 }
0 голосов
/ 01 июля 2011

Я думаю, вам следует пересмотреть свой дизайн - немного запутанно иметь метод trim, который возвращает false для некоторых значений аргумента и строку для других. Как насчет удаления любых пробельных символов, которые «не разрешены»? Тогда ваш метод может быть переписан как:

function trim(myString) {
    return myString.replace(/^\s+/,'').replace(/\s+$/,'').replace(/\s{3,}/,'   ');
}

Сначала удаляются начальные и конечные пробелы, затем все последовательности из 3 или более пробельных символов заменяются на 3 пробела. Например:

var str = ' a    b   c  d e      ';
trim(str); // Returns 'a   b   c  d e'

Примечание: в современных браузерах , функция может быть еще более упрощена:

function trim(myString) {
    return myString.trim().replace(/\s{3,}/,'   ');
}
...