Регулярное выражение Javascript "Символ с одним пробелом" - PullRequest
28 голосов
/ 12 марта 2010

Я изучаю JavaScript и анализирую существующие коды.

В моем справочнике по JS говорится, что для поиска по одному пробелу используется "\s"?

Но я наткнулся на код

obj.match(/Kobe Bryant/);

Вместо использования \s используется реальное пространство?

Почему это не приводит к ошибке?

Ответы [ 4 ]

66 голосов
/ 12 марта 2010

Класс символов \s содержит не только пробел, но и другие символы пробела Unicode . \s эквивалентно этому классу символов:

[\t\n\v\f\r \u00a0\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u200b\u2028\u2029\u3000]
7 голосов
/ 12 марта 2010

Нет. Совершенно законно включать буквенное пространство в регулярное выражение.

Однако это не эквивалентно - \s будет включать любые пробельные символы, включая символы табуляции, неразрывные пробелы, пробелы полуширины и другие символы, тогда как литеральный пробел будет соответствовать только обычному пробелу.

6 голосов
/ 12 марта 2010

\s соответствует любому символу пробела, включая символы табуляции и т. Д. Конечно, вы можете использовать буквенное пространство также без проблем. Также как вы можете использовать [0-9] вместо \d для обозначения любой цифры.

2 голосов
/ 12 марта 2010

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...