2010-12-01 2 views
3

мне было интересно, как я хотел бы написать регулярное выражение, которое говорит «и NO whitespaces'.I необходимо реализовать это в следующее, если заявление, смотрите ниже:Как написать выражение регулярного выражения с надписью «И без пробелов»?

$('#postcode').blur(function(){ 
    var postcode = $(this), val = postcode.val(); 

    if((val.length >= 5) && (*******)){ 
     postcode.val(val.slice(0, -3)+' '+val.slice(-3)).css('border','1px solid #a5acb2'); 
    }else{ 
     $(this).css('border','1px solid red'); 
    } 
}); 

Любая помощь очень ценится, спасибо

ответ

4

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

&& (!val.match(/\s/)) 

match возвращение null, если нет пространства (или, по крайней мере один пробел), так что вы можете использовать его в качестве условия.

+1

Если вы действительно хотите, вы можете объединить проверку длины в регулярное выражение с помощью `если (val.match (/^\ S {5,} $ /)) `(обратите внимание на верхний регистр S), но я не уверен, что это лучше. – Kobi 2010-12-01 10:31:16

+0

Это отлично работает, спасибо триллион – Nasir 2010-12-01 10:35:32

1
&& (val.indexOf(" ") == -1) 

Примечание: регулярное выражение не должно использоваться, если доступны другие варианты.

+0

Правда, но `\ s` также проверяет вкладки и символы новой строки. Обычно люди ссылаются на `` `` as 'space', а остальные - на «пробелы», но это лучшее решение для нормальных пространств. – Kobi 2010-12-01 10:26:40

1

Был бы cleaning the whitespaces перед тем, как строка 3 вашего кода поможет? (возможно, менее навязчивым)

1

Вы можете сделать оба в том же регулярном выражении (угадывающий почтовый индекс - цифры).

('1234567').match(/^\d{5,}$/) // ['1234567'] 
('1234').match(/^\d{5,}$/) // null 
('12 34').match(/^\d{5,}$/) //null 
('123 4567').match(/^\d{5,}$/) //null 

так вместо:

if((val.length >= 5) && (*******)){ 
    //code 
} 

использование:

if(val.match(/^\d{5,}$/)) { 
    //code 
} 
Смежные вопросы