如何将replace函数正则中的固定值20替换为变量words并生效?
如何将代码中正则里的“20”替换为变量“words”?
你直接在正则字面量里写{words}是不行的——正则字面量(/.../)里的内容是固定字符串常量,正则引擎会把{words}当成字面字符解析,而不是读取变量words的值,这就是代码失效的原因。
解决方法是用RegExp构造函数动态生成正则表达式,把变量拼接到正则字符串中:
var words = 125; // 动态创建正则表达式,将变量words插入到重复次数位置 var targetRegex = new RegExp('([a-zA-Z]+[.,]? ){' + words + '}'); $(".px-text-module-<?php echo $id; ?>").html($(".px-text-module").html().replace(targetRegex, function(x) { return '<div class="read-more-wrapper"><p class="read-more-content">' + x + '<span class="read-more-dots">...<br></span></p></div><p>'; }));
关键说明:
- RegExp构造函数接受两个参数:第一个是正则表达式的字符串形式,第二个是可选标志(比如
g表示全局匹配,原代码没用到可以不加)。 - 通过字符串拼接
'([a-zA-Z]+[.,]? ){' + words + '}',就能把变量words的数值作为正则的重复次数。 - 如果
words可能是字符串类型,建议先转成数字:'...{' + parseInt(words, 10) + '}',避免非数字值导致正则出错。
内容的提问来源于stack exchange,提问作者Bob
相关产品推荐
相关产品推荐

