JavaScript 回顾正则表达式

标签 javascript regex

我想用数字 1 替换字符串中所有不以 _ 开头的字母。

所以

jj*_sin(jj)+_cos(hh)

应该是

1*_sin(1)+_cos(1)

如何使用正则表达式回溯或任何其他方法实现它。

最佳答案

使用如下的否定前瞻断言。

(?!_)\b[a-z]+

然后将匹配到的字符替换为1

DEMO

> "jj*_sin(jj)+_cos(hh)".replace(/(?!_)\b[a-z]+/g, "1")
'1*_sin(1)+_cos(1)'

var str = "jj*_sin(jj)+_cos(hh)";
snippet.log("Before: " + str);
str = str.replace(/(^|[^_])\b[a-z]+/g, "$11");
snippet.log("After:  " + str);
<!-- Script provides the `snippet` object, see http://meta.stackexchange.com/a/242144/134069 -->
<script src="http://tjcrowder.github.io/simple-snippets-console/snippet.js"></script>

\b 单词边界是上述正则表达式中的重要内容,它匹配单词字符和非单词字符。 (^|[^_]) 捕获一行的开头或一个非下划线的字符。 \b 在这里很重要,因为如果没有 \b,它将匹配像 9foo 这样的字符串。 \b 确保字母表前面有一个非单词字符或起始 anchor 。 [a-z]+ 匹配一个或多个小写字母。因此,通过将所有匹配的字符替换为组索引 1 内的字符加上数字 1 将为您提供所需的输出。

关于JavaScript 回顾正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27677946/

相关文章:

正则表达式问题通过 curl 向 Varnish 服务器发送 BAN 请求

swift - 正则表达式与多个组 swift

javascript - 使用 AJAX、Javascript 和 PHP 与 MySQL 来显示搜索结果

javascript - 更改其他 div 的位置后将 div 推到顶部

python - 使用python在html源代码中查找图像

c++ - 为什么我的正则表达式会导致无限循环?

java - 如何在包含单个点或句点的文件中获取单词?

javascript - 用于排序的数据表自定义下拉列表

javascript - 如果状态设置为 true,则 React 显示图像

javascript - TypeScript代码补全//因变量不显示