я могу заменить regExp другим regExp?

1
 var str='The_Andy_Griffith_Show'; // string to perform replace on
 var regExp1=/\s|[A-Z]/g;
 var regExp2=/[^A-Z]/g;            // regular expression
 var str2 =str.replace(regExp2,regExp1); 
 // expected output: The_ Andy_ Griffith_ Show

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

Теги:
replace

3 ответа

1

Если вы хотите добавить пробел перед любым письмом, достаточно использовать

var str='The_Andy_Griffith_Show';
str = str.replace(/[A-Z]/g, ' $&')
console.log(str); // => "  The_ Andy_ Griffith_ Show"

Здесь /[AZ]/g соответствует всем прописным буквам ASCII, а $& является обратной ссылкой на все значение соответствия.

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

var str='The_Andy_Griffith_Show'; // string to perform replace on
str = str.replace(/(^|[^A-Z])([A-Z])/g, '$1 $2')
console.log(str); // => "  The_ Andy_ Griffith_ Show"

Удалить ^| если вы не хотите добавлять пробел перед заглавной буквой при начале строки (т.е. используйте /([^AZ])([AZ])/g).

  • 1
    Это было хорошо (у)
0

Просто альтернатива другим ответам.
Чтобы получить ожидаемый результат, вы можете просто сопоставить не верхние регистры, за которыми следует символ верхнего регистра, а затем заменить их на соответствие $& и пробелу.

Например:

var str='The_Andy_Griffith_Show';
str = str.replace(/[^A-Z](?=[A-Z])/g, '$& ')
console.log(str);

Или просто сопоставьте те верхние регистры, за которыми следует символ верхнего регистра.

var str='The_Andy_Griffith_Show';
str = str.replace(/[_](?=[A-Z])/g, '$& ')
console.log(str);
0

Чтобы добавить пространство ко всем вхождениям прописных букв:

var str = 'The_Andy_Griffith_Show',
    str2 = str.replace(/[A-Z]/g, letter => ' ${letter}');
    
console.log(str2);

Обратите внимание, что если вы не хотите добавлять пространство в первое письмо, просто используйте регулярное выражение /(?!^)[AZ]/g.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню