2011-11-19 2 views
0

Как применить эту функцию обрезки: var trimmed = str.replace(/^\s+|\s+$/g, '') ; к этому коду ниже, чтобы в текстовом поле содержались пробелы, отображается сообщение «Неверно»? Кроме того, если я использую эту функцию, я могу использовать «/» в текстовом поле, потому что текстовое поле может содержать данные с «/».Как использовать эту функцию обрезки для моего текстового поля

if (moduletext.value == ""){ 
     errmsg.innerHTML = "Incorrect"; 
    }else{ 
      errmsg.innerHTML = "Correct"; 
    } 

ответ

2

Самый простой способ сделать то, что вы пытаетесь сделать, - проверить длину обрезанного значения.

var trimmed = moduletext.value.replace(/^\s+/, '').replace(/\s+$/, ''); 
if(!trimmed.length) { 
    errmsg.innerHTML = 'Incorrect'; 
} else { 
    errmsg.innerHTML = 'Correct'; 
} 

Если вы знаете, какой браузер вы используете (как правило, ничего не < IE9), вы можете быть в состоянии использовать родную реализацию браузера дифферента, т.е. 'my string'.trim();

+0

Спасибо вам за ваши ответы. Ответ Scurker - это именно то, что я ищу, поэтому я буду называть этот ответ лучшим ответом – BruceyBandit

0

Вместо replace(), использовать более простое выражение с match(). Регулярное выражение /\s/ будет соответствовать любому пробелу в текстовом поле и вызовет сообщение Incoorect.

if (moduletext.match(/\s/)){ 
    errmsg.innerHTML = "Incorrect"; 
}else{ 
    errmsg.innerHTML = "Correct"; 
} 

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

+0

Это не отображает сообщение внизу, если он равен «» или содержит пробелы, я поставил мою попытку под ваш ответ, я сделал что-то неправильно – BruceyBandit

+0

Если вы не можете увидеть мои редактирования, то это что я пытался: if (moduletext.value == "") { errmsg.innerHTML = "Неверно"; } else if (moduletext.match (/ \ s /)) { errmsg.innerHTML = "Неверно"; } else { errmsg.innerHTML = "Правильно"; } – BruceyBandit

+0

@Michael Подумайте о том, что говорится в заявлении о регулярном выражении. '' '.match (/ \ s /); // true' '' asdf'.match (/ \ s /); // false' '' как df'.match (/ \ s /); // true' Ваше выражение соответствует _anything_, которое содержит пробелы, что противоречит тому, что пытается выполнить Malcom. – scurker

0

Похоже, вы хотите, левый и правая обрезанная строка и способ обновления поля состояния для вашего пользователя. Они могут представлять интерес для Вас:

<html> 
    <head> 
    <script> 
      //option 1: just determine if the string is valid 
      string_valid = function (str) { 

       validity_indicator = { 
        true:"Valid", 
        false:"InValid", 
       }; 

       return validity_indicator[str.match(/\s*([^\s](:?.*[^\s])?)\s*/) != null]; 
      }; 

      // option 2: the trim and validation sort of wrapped up in one. 
      parse_for_validity = function (str) { 
       if ((result = /\s*([^\s](:?.*[^\s])?)\s*/.exec(str)) == null) { 
        return 'Incorrect'; 
       } 
       return result[ 1 ]; 
      }; 

      // then either 
      // errmsg.innerHTML = string_valid(your_string_here) 

     </script> 
    </head> 
    <body> 
     <!-- and then test them out --> 
     <script> 
      alert(string_valid(" "));  // => 'Incorrect' 
      alert(string_valid(" abc "));  // => 'Correct' 
      alert(parse_for_validity(" ")); // => 'Incorrect' 
      alert('...' + parse_for_validity(" abc ") + '...'); // => '...abc...' 
     </script> 
    </body> 
</html> 

Что касается /, я полагаю, у вас есть только касаться себя с ним, когда вы используете его в качестве регулярного выражения. Имея / в строке, которую вы тестируете, все в порядке. Если вы хотите проверить на / в вашем регулярном выражении, вы должны быть в состоянии избежать его, как этот \/, как в следующем выражении: /\//

Я надеюсь, что это помогает. Я люблю регулярное выражение! :)

+0

* бежать, как это \ \ \ – kikuchiyo

0
function trim(stringToTrim) { 
return stringToTrim.replace(/^\s+|\s+$/g,"");} 
function ltrim(stringToTrim) { 
return stringToTrim.replace(/^\s+/,"");} 
function rtrim(stringToTrim) { 
return stringToTrim.replace(/\s+$/,"");} 

calling : trim(document.getElementById('username').value); 


used for removing all kinds of spacing... 
Смежные вопросы