我可以用另一个regExp替换regExp吗?

时间:2017-06-09 08:05:49

标签: javascript regex replace

 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

我想用空格和相同的字母替换字符串的所有第一个大写字母,如果那不可能有解决方法吗?

3 个答案:

答案 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);