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
我想用空格和相同的字母替换字符串的所有第一个大写字母,如果那不可能有解决方法吗?
答案 0 :(得分:1)
如果你想在任何首字母之前添加一个空格,那就足够了
var str='The_Andy_Griffith_Show';
str = str.replace(/[A-Z]/g, ' $&')
console.log(str); // => " The_ Andy_ Griffith_ Show"

此处,/[A-Z]/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"

如果您不想在字符串开头的大写字母前添加空格(即使用^|
),请删除/([^A-Z])([A-Z])/g
。
答案 1 :(得分:0)
为所有出现的大写字母添加空格:
var str = 'The_Andy_Griffith_Show',
str2 = str.replace(/[A-Z]/g, letter => ` ${letter}`);
console.log(str2);

请注意,如果您不想为第一个字母出现添加空格,请使用regular expression /(?!^)[A-Z]/g
。
答案 2 :(得分: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);