JavaScript regex замена - но только часть совпавшей строки?

У меня есть следующая функция замены

myString.replace(/\s\w(?=\s)/,"$1\xA0");

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

Однако вышеупомянутая переменная за 1$ не работает на меня. Это вставляет текст "1$" вместо части исходной совпавшей строки + nbsp.

Какова причина наблюдаемого поведения? Там какой-либо другой путь состоит в том, чтобы достигнуть его?

7
задан Peter Mortensen 19 February 2010 в 12:15
поделиться

2 ответа

$ 1 не работает, потому что у вас нет подгрупп захвата.

Регулярное выражение должно иметь вид / \ b (\ w +) \ s + / .

9
ответ дан 6 December 2019 в 15:21
поделиться

$1 не работает, так как у вас нет захватывающих подгрупп.

Регулярное выражение должно иметь вид /\b (\w + )\s +/.

-121--3894376-
Array.ConvertAll(inputArray, p => p.ToString())

При этом массив object преобразуется в массив string . Можно преобразовать массив другого типа, изменив лямбда-выражение.

-121--2328574-

Кажется, вы хотите сделать что-то подобное:

myString.replace(/\s(\w)\s/,"$1\xA0");

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

5
ответ дан 6 December 2019 в 15:21
поделиться
Другие вопросы по тегам:

Похожие вопросы: