Как "/\ s/g" заменяет пробелы другими символами?

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

Может кто-нибудь, пожалуйста, объясните мне, что это значит? Спасибо вам

Ответ 1

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

Ответ 2

It (/.../) является литералом регулярного выражения - он создает новый объект RegExp так же, как "hey" создает новую строку (есть некоторые небольшие оговорки со строкой vs String, но...) Дополнительную информацию можно найти на странице документации Mozilla Regular Expression.

"g" в конце - это флаг, который означает "сопоставить глобально" (регулярное выражение теперь будет соответствовать несколько раз, иначе оно будет совпадать только один раз).

\ s - это регулярное выражение escape и означает "любой символ пробела". В частности: "Совпадает с одним символом пробела, включая пробел, табуляцию, фид-фид, линию. Эквивалент [\ f\n\r\t\v\u00A0\u2028\u2029].", По ссылке выше.

При переходе в функцию String.replace все совпадения объекта регулярного выражения (литерал просто создает объект) будут заменены на данная строка (необязательно String.replace может использовать функцию обратного вызова для большей гибкости).

Как обсуждалось в ссылке разработчика, тот же объект можно было бы построить без литерала регулярного выражения. Следующий фрагмент просто пытается показать объект-природу объекта RegExp, а также демонстрирует нелитеративную форму и т.д.

// note the double \ as first needed to pass the \ through the string
// literal parsing -- usually better as /\s/g unless need to build regex dynamically
var re = new RegExp("\\s", "g")
// just an object with its own properties/functions (now stored in `re`)
re.test("have a space") // -> true
re.test("nospace")      // -> false
"hello world again!".replace(re, "") // -> "helloworldagain!"
// without "g", matches only once
"hello world again!".replace(/\s/, "") // -> "helloworld again!"

Счастливое кодирование.

Ответ 3

/\s/g

/ является ограничителем регулярного выражения. Он отмечает начало и конец шаблона

\s соответствует всем пробелам: '\t', '\n', '\r', '\f', ' ' и несколько другие

g означает, что регулярное выражение должно соответствовать строке глобально, так что str.replace заменит все вхождения шаблона.

Ответ 4

http://www.regular-expressions.info/

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

g в конце // означает "глобальный", что означает поиск по всему входу, а не только первое совпадение. Регулярные выражения очень популярны и могут быть очень сложными, читать их по ссылке выше.

Javascript имеет несколько методов, которые используют регулярные выражения, например search и match. Регулярные выражения существуют во многих языках программирования, они обычно немного различаются на каждом языке. http://www.w3schools.com/jsref/jsref_obj_regexp.asp

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

Ответ 5

g lobal flag важен, поскольку в противном случае будет заменен только первый символ темпа /s/.