仅使用正则表达式在JavaScript中查找和替换完整单词

时间:2012-09-20 03:20:22

标签: javascript regex

说我有以下字符串:

var str = '(1 + foo + 3) / bar';

我想用字母'x'替换所有字符串。我试过了:

str = str.replace(/\w/g, 'x');

这导致:

(x + xxx + x) / xxx

相反,我希望结果是:

(1 + x + 3) / x

我该怎么做?我怎样才能找到没有数字的单词并将单词替换为单个字母?

5 个答案:

答案 0 :(得分:3)

为什么不使用[a-z]+代替\w? (确保添加case-insensetive标志,或使用[a-zA-Z]代替)

答案 1 :(得分:1)

使用:

str = str.replace(/[a-z]+/ig, 'x');

答案 2 :(得分:1)

请尝试使用[a-zA-Z]\w相当于[a-zA-Z0-9_]

str = str.replace(/[a-zA-Z]+/g, 'x');

答案 3 :(得分:1)

你可以试试这个正则表达式:

str = str.replace(/[a-z]+/ig, 'x');

[a-z] - 表示您正在寻找任何信件。

+ 表示您正在寻找组合(xxx)。

i 表示文本匹配可以不区分大小写。

g - 表示您正在查找字符串中的所有匹配项。

你可以使用

   [a-zA-Z]

它将寻找小写字母a-z和大写字母A-Z。这是在没有case修饰符的情况下使用的。

答案 4 :(得分:1)

str = str.replace(/\b[a-z]+\b/ig, 'x');

\b匹配单词边界。那样'foo2'就不会变成'x'。正如其他人提到的\w包括数字,但也是下划线,所以你不会想要使用它。 i修饰符执行不区分大小写的匹配(以便您可以更轻松地阅读)。