2013-04-16 2 views
7

Кажется довольно простым, но не может понять, почему этот код javascript не работает, возвращая false, когда ожидает true). Я предполагаю, что ему нужно что-то сделать с символами escape? Может ли кто-нибудь помочь мне написать блок JS, который вернет true, если присутствует пробел?Регулярное выражение для проверки наличия пробела?

var inValid = new RegExp("[\s]"); 
var value = "test space"; 
var k = inValid.test(value); 
alert(k); 

ответ

15

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

var inValid = /\s/; 
var value = "test space"; 
var k = inValid.test(value); 
alert(k); 
3

Вам нужно бежать обратную косую черту, если вы создаете свой объект RegExp из строки буквального:

var inValid = new RegExp("[\\s]"); 

В качестве альтернативы вы можете просто использовать следующее:

var inValid = /\s/; 

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

3

Вам нужен двойной характер побега:

один для «с» и один для «\» само по себе:

var inValid = new RegExp("[\\s]"); 
3

Если вы хотите, чтобы соответствовать что-то там, но не пробельные:

alert(/^\S+$/.test(value)); 
Смежные вопросы