0

假设我有以下字符串:

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

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

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

这导致:

(x + xxx + x) / xxx

相反,我希望结果是:

(1 + x + 3) / x

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

4

5 回答 5

3

为什么不直接使用[a-z]+而不是\w?(确保添加不区分大小写的标志,或[a-zA-Z]改用)

于 2012-09-20T03:22:09.950 回答
2
str = str.replace(/\b[a-z]+\b/ig, 'x');

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

于 2012-09-20T04:23:49.953 回答
1

采用:

str = str.replace(/[a-z]+/ig, 'x');
于 2012-09-20T03:23:08.570 回答
1

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

str = str.replace(/[a-zA-Z]+/g, 'x');
于 2012-09-20T03:23:08.893 回答
1

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

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

[az] - 表示您正在寻找任何字母。

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

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

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

或者

您可以使用

   [a-zA-Z]

它将查找小写字母 az 和大写字母 AZ。这是在没有 case 修饰符的情况下使用的。

于 2012-09-20T03:24:24.130 回答