如何用JavaScript正则表达式给单个单词添加node.前缀?
解决方案:用正则表达式给独立变量添加
node.前缀 要实现给字符串中独立的单个单词变量添加node.前缀,同时不影响page.a这类带点的属性名,可以通过JavaScript的正则表达式全局替换完成。
核心代码示例
// 基础场景替换 let origin = 'page.a = b'; let expected = origin.replace(/\b([a-zA-Z_$][a-zA-Z0-9_$]*)\b/g, 'node.$1'); console.log(expected); // 输出:page.a = node.b // 多变量复杂场景测试 let origin2 = 'page.a = b && page.a < c'; let expected2 = origin2.replace(/\b([a-zA-Z_$][a-zA-Z0-9_$]*)\b/g, 'node.$1'); console.log(expected2); // 输出:page.a = node.b && page.a < node.c
正则表达式说明
\b:单词边界,确保匹配的是独立单词(前后为非单词字符,比如空格、运算符、字符串首尾),避免误匹配page.a中的a。([a-zA-Z_$][a-zA-Z0-9_$]*):匹配合法的JavaScript标识符(首字符为字母、下划线或$,后续可跟字母、数字、下划线或$),并将其捕获为分组1。g:全局匹配标志,替换字符串中所有符合条件的单词。
可选:排除特定关键字
如果需要排除true、false、null这类关键字不被替换,可调整正则为:
let origin = 'page.a = b && flag === true'; let expected = origin.replace(/\b(?!(true|false|null)\b)([a-zA-Z_$][a-zA-Z0-9_$]*)\b/g, 'node.$1'); console.log(expected); // 输出:page.a = node.b && node.flag === true
内容的提问来源于stack exchange,提问作者Lou Kai
相关产品推荐
相关产品推荐

