Регулярное выражение Javascript "Символ с одним пробелом"
Я изучаю JavaScript и анализирую существующие коды.
В моем справочнике по JS говорится, что нужно искать в одном месте "\s
"?
Но я наткнулся на код
obj.match(/Kobe Bryant/);
Вместо того, чтобы использовать \s
, он использует реальное пространство?
Почему это не генерирует ошибку?
5 ответов
Класс персонажа \s
не только содержит символ пробела, но также и другие символы пробела Unicode. \s
эквивалентно этому классу символов:
[\t\n\v\f\r \u00a0\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u200b\u2028\u2029\u3000]
Нет. Совершенно законно включать буквенное пространство в регулярное выражение.
Тем не менее, это не эквивалентно - \s
будет включать любые пробельные символы, включая символы табуляции, неразрывные пробелы, пробелы полуширины и другие символы, тогда как литеральный пробел будет соответствовать только обычному пробелу.
\s
соответствует любому символу пробела, включая символы табуляции и т. д. Конечно, вы можете использовать буквальное пространство также без проблем. Так же, как вы можете использовать [0-9]
вместо \d
для обозначения любой цифры.
В дополнение к обычным пространствам, \s
соответствует различным видам пробелов, включая символы табуляции (и, возможно, символы новой строки, в зависимости от конфигурации). Тем не менее, сопоставление с нормальным пробелом, безусловно, допустимо, особенно в вашем случае, когда кажется, что вы хотите сопоставить имя, которое обычно разделяется обычным пробелом.
\xA0 также является пробелом, особенно неразрывным. У нас возникла проблема с редактором Quill, когда мы вставляли простой текст с пробелами из Notepad++. Пробел в JS \xA0 является пробелом, но не соответствует обычному пробелу \u0020 (' ').