2009-07-22 2 views
7

Я ищу регулярное выражение javascript для пробелов. Я проверяю несколько разных строк в цикле, и мне нужно найти строки, в которых есть большое белое пространство.javascript regex for whitespace или  

Пустое пространство строка построена в цикле, как это ...

пожалуйста, прочитайте этот код, как var whitespace = " " то цикл просто concats более не являющихся неразрывные пробелы на нем.

var whitespace = " " 

     for (var x = 0; x < 20; x++) { 
      whitespace += "&nbsp;" 
     } 

затем он используется позже в строке concat.

sometext += whitespace + someData; 

Мне нужно идентифицировать строки, содержащие пробелы (20 пробелов).

Или должен ли я просто делать contains(whitespace) или что-то подобное.

Любая помощь приветствуется.

Приветствия, ~ ск в Сан-Диего

ответ

1

Если вы определили пробелы в 20 мест, которые вы можете сделать

var input = whitespace + someData; 
if(input.indexOf(whitespace) != -1) 
{ 
    //input contains whitespace. 
} 

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

+0

Thanks Yogi !! Кстати, как вы получаете мои вопросы так быстро? Всякий раз, когда я задаю вопрос с регулярным выражением, вы отвечаете на него очень быстро. Это твиттер, связанный или что-то еще? Мне было просто любопытно. ~ ck – Hcabnettek

+0

Есть вопросы и ответы на SO. Просто установите для него RSS-ридер. :-) –

+0

Я получаю электронное письмо, когда вы отправляете вопрос! ;) Просто шучу. Я вхожу в СО каждые несколько часов и вижу, есть ли какие-либо вопросы, на которые я могу ответить. – SolutionYogi

32

Для этого конкретного вопроса Йог правильный - вам не нужно регулярное выражение, и вам, вероятно, лучше без него.

На будущее, если кто-то приходит смотреть, регулярное выражение имеет особый характер для пробельных:

\s 

В JS просторечии (где регулярные выражения литералы могут быть заключены в прямые слеши), если вы ищете 20 пространства (не вкладки, переводы строк и т.д.), вы можете сделать это:

/ {20}/ 

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

\u00A0 

Совмещенных, ищу любую комбинацию из 20 пробельных символов (включая вкладки и т.д.) или NBSPs в ряде (квадратные скобки обозначают «класса символов»):

/[\s\u00A0]{20}/ 

EDIT: Включение Фомы пункт о NBSP. Дайте свой комментарий и/или ответьте на голосование, если хотите - я знаю, что знаю.

+1

можно так думать, но на самом деле это просто неправильно для слишком большого количества браузеров. – citykid

+1

Блестящий! Кодовая точка Unicode для NBSP - именно то, что я искал. Это полезно для разбиения строки на слова: 'sentence.split (/ [\ s \ u00A0] + /)'. – thure

0

Для IE (я тестировал в IE7), \s не соответствует &nbsp;, но Chrome и Firefox. Поэтому, если вы хотите устранить пробелы, но не &nbsp; (без разрыва), не используйте \s, так как он не является браузером.

Например, вы хотите, чтобы устранить все пробелы в том числе \ п \ т, но не &nbsp;, вы можете использовать \n \t и белое пространство, то есть: str.replace(/[\t \n]+/g, "")

7

По крайней мере IE и Chrome не включают символ 160 (nbsp) в \ s. Регулярное выражение, которое включает в

wsregex = /[\s|\u00A0]/ 

смотри также http://www.adamkoch.com/2009/07/25/white-space-and-character-160/ , который сообщает о IE, но пока хром, видимо, также изменились, чтобы не включать его.