如何在Regex Literal中使用空字符串?

时间:2014-01-21 23:04:00

标签: javascript regex

我以为我会在字符串中的每个字母后间隔,例如foo变为f o o

我在想的是'foo'.replace(//g, ' '); g 标志来替换每个实例,否则我不想要正则表达式,我会:)强>)。

我只有一个小问题...在JavaScript中,//是评论,所以它不起作用。

如何实现输入正则表达式文字(带斜杠),或者这是不可能的,我必须创建(通过输入)一个Regex对象?

3 个答案:

答案 0 :(得分:2)

请尝试使用此正则表达式:

/.(?!$)/g

您可以将其读作:“查找除最后一个之外的所有字符。”

描述

Regular expression visualization

示例代码

'foo'.replace(/.(?!$)/g, '$& ');

演示

http://regex101.com/r/xH9bK1

答案 1 :(得分:1)

有几种方法可以做到这一点。 (这些方法从最佳做法到最差做法。我推荐第一个,我高度不鼓励最后一个。)


使用split / join,这是一种更好的方法,开销更少。这里不需要正则表达式:

'foo'.split('').join(' ');

或使用RegExp构造函数

'foo'.replace(new RegExp('', 'g'), ' ');

或者,添加一个无用的组(不推荐,因为乍一看还不清楚):

'foo'.replace(/()/g, ' ');

根据您的上一段再提出一条评论:

  

如何使用正则表达式文字来实现这一点,或者它是不可能的,我将不得不创建一个Regex对象?

它们实际上是一样的:

screenshot

“使用正则表达式文字...或...正则表达式对象”没有意义,因为正则表达式文字 RegExp对象。

答案 2 :(得分:0)

您可以使用\B除字边界之外的所有内容)

'foo'.replace(/\B/g,' ');

或者如果你想在每个地方更换

'foo'.replace(/\B|\b/g,' ');