我有一个 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/