我以为我会在字符串中的每个字母后间隔,例如foo
变为f o o
我在想的是'foo'.replace(//g, ' ');
( g 标志来替换每个实例,否则我不想要正则表达式,我会:)强>)。
我只有一个小问题...在JavaScript中,//
是评论,所以它不起作用。
如何实现输入正则表达式文字(带斜杠),或者这是不可能的,我必须创建(通过输入)一个Regex对象?
答案 0 :(得分:2)
请尝试使用此正则表达式:
/.(?!$)/g
您可以将其读作:“查找除最后一个之外的所有字符。”
'foo'.replace(/.(?!$)/g, '$& ');
答案 1 :(得分:1)
有几种方法可以做到这一点。 (这些方法从最佳做法到最差做法。我推荐第一个,我高度不鼓励最后一个。)
使用split
/ join
,这是一种更好的方法,开销更少。这里不需要正则表达式:
'foo'.split('').join(' ');
或使用RegExp
构造函数
'foo'.replace(new RegExp('', 'g'), ' ');
或者,添加一个无用的组(不推荐,因为乍一看还不清楚):
'foo'.replace(/()/g, ' ');
根据您的上一段再提出一条评论:
如何使用正则表达式文字来实现这一点,或者它是不可能的,我将不得不创建一个Regex对象?
它们实际上是一样的:
“使用正则表达式文字...或...正则表达式对象”没有意义,因为正则表达式文字 是RegExp
对象。
答案 2 :(得分:0)
您可以使用\B
(除字边界之外的所有内容)
'foo'.replace(/\B/g,' ');
或者如果你想在每个地方更换
'foo'.replace(/\B|\b/g,' ');