Javascript 正则表达式占位符打印字符串而不是其值

标签 javascript regex

我有一个 JavaScript 函数,它查找特定格式的字符串,然后将其转换为链接

<script>
var re = /Ticket-([0-9]*?(?=-)-[0-9]*)/; 
var str = 'ASD Ticket-492-367 - Make my day.'; 
t = str.replace(re,'<a href="http://myworld/ticket/$1">$0</a>')
document.write(t);
</script>

它会查找 Ticket-[somenumbers]-[somenumbers] 并将其转换为链接。现在,当我在在线 JS 编辑器中单独运行它时,它就可以工作了。但是,当我在脚本中运行它并查看页面时,它确实将字符串转换为列表,但在页面上打印出文字 $0 而不是其值。我的 Javascript 是否正确,或者我的脚本中是否有其他内容可能导致错误的结果。一如既往,我们感谢任何帮助。

最佳答案

Javascript 使用 $& 作为整个匹配的占位符,而不是 $0 $number 仅用作捕获组的占位符括号。请参阅MDN

var re = /Ticket-([0-9]*?(?=-)-[0-9]*)/; 
var str = 'ASD Ticket-492-367 - Make my day.'; 
t = str.replace(re,'<a href="http://myworld/ticket/$1">$&</a>')
document.getElementById('result').innerHTML = t;
<div id="result"></div>

关于Javascript 正则表达式占位符打印字符串而不是其值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29439739/

相关文章:

javascript - 在javascript匹配中获取正则表达式的单独部分

javascript - 基本了解javascript中的函数和声明

javascript - 获取 JSON 中的属性值

java - 在java中使用正则表达式,解析文本的各个部分

C++ boost 正则表达式 : How to find all possible string constants from C/C++ code?

java - IntelliJ 中的正则表达式反向引用

用于闭括号的 JavaScript 正则表达式

javascript - knockout 拖放导致重复

javascript - PreventDefault 在 Firefox 中不生效

javascript - React Native 如何监听生命周期中的上下文变化