说我有以下字符串:
var str = '(1 + foo + 3) / bar';
我想用字母'x'
替换所有字符串。我试过了:
str = str.replace(/\w/g, 'x');
这导致:
(x + xxx + x) / xxx
相反,我希望结果是:
(1 + x + 3) / x
我该怎么做?我怎样才能找到没有数字的单词并将单词替换为单个字母?
答案 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
修饰符执行不区分大小写的匹配(以便您可以更轻松地阅读)。