假设我有以下字符串:
var str = '(1 + foo + 3) / bar';
我想用字母替换所有字符串'x'
。我试过:
str = str.replace(/\w/g, 'x');
这导致:
(x + xxx + x) / xxx
相反,我希望结果是:
(1 + x + 3) / x
我该怎么做?我如何才能找到没有数字的单词并将单词替换为单个字母?
假设我有以下字符串:
var str = '(1 + foo + 3) / bar';
我想用字母替换所有字符串'x'
。我试过:
str = str.replace(/\w/g, 'x');
这导致:
(x + xxx + x) / xxx
相反,我希望结果是:
(1 + x + 3) / x
我该怎么做?我如何才能找到没有数字的单词并将单词替换为单个字母?
为什么不直接使用[a-z]+
而不是\w
?(确保添加不区分大小写的标志,或[a-zA-Z]
改用)
str = str.replace(/\b[a-z]+\b/ig, 'x');
\b
匹配单词边界。这样'foo2'就不会变成'x'。正如其他人提到的那样\w
,包括数字,但也包括下划线,所以你不想使用它。i
修饰符进行不区分大小写的匹配(以便您可以更轻松地阅读)。
采用:
str = str.replace(/[a-z]+/ig, 'x');
尝试[a-zA-Z]
改用。\w
相当于[a-zA-Z0-9_]
。
str = str.replace(/[a-zA-Z]+/g, 'x');
你可以试试这个正则表达式:
str = str.replace(/[a-z]+/ig, 'x');
[az] - 表示您正在寻找任何字母。
+ 表示您正在寻找一个组合 (xxx)。
i 表示文本匹配可以不区分大小写。
g - 表示您正在查找字符串中的所有匹配项。
或者
您可以使用
[a-zA-Z]
它将查找小写字母 az 和大写字母 AZ。这是在没有 case 修饰符的情况下使用的。