Javascript对捕获的regexp执行算术
Javascript perform arithmetic on captured regexp
我想把我的标题从默认的"*number* new messages | default"
这是我的代码,它从默认变为1 new messages
很好,但它从来没有超过1。
title = $('title').text();
regexp = /^('d+)/
if (title.match(regexp))
$('title').text().replace(regexp, (parseInt("$1")+1).toString())
else
$('title').text('1 New Messages | Default')
您应该使用函数作为replace
的第二个参数,您还需要设置新值:
var title = $('title').text();
$('title').text(title.replace(regexp, function(m) { return parseInt(m, 10) + 1) }));
并且,像往常一样,在调用parseInt
时不要忘记基数参数,否则您迟早会感到不愉快。
我最近遇到了这个问题,这个问题与在替换函数的第二个参数内调用函数有关。$1只有在直接作为字符串字面值调用时才有效,而不是作为函数的字符串参数调用。
另一个问题是$('title').text().replace(regexp, (parseInt("$1")+1).toString())
将返回一个字符串。你需要传递你想要分配文本的值作为text()
函数的函数参数,就像你在else块中所做的那样。
试试这个:
title = $('title').text();
regexp = /^('d+)/
if (numToReplace = title.match(regexp))
$(title).text(title.replace(regexp, (parseInt(numToReplace[1])+1).toString()))
else
$('title').text('1 New Messages | Default')
和一个JSFiddle: http://jsfiddle.net/KFW4G/
replace
返回一个新字符串,因此您必须再次使用text
将文本设置为结果。
相关文章:
- 无法在通过jQuery的ajax加载的页面中执行javascript
- JavaScript执行暂时挂起页面
- 如何在ReactJS JSX中执行嵌套的if-else语句
- 当js函数's已执行
- 哪个先执行
- 在使用Polymer'加载所有json文件后执行方法;s的核心ajax
- HTML表单提交时未执行外部函数
- 在Safari执行javascript之前对其进行修改
- Amd,希望确保某个东西总是最后执行
- 在Windows 10中自动执行例行程序(主要与浏览器交互)
- 递归使用 eval() 是检查程序执行的好方法吗?
- 如何做到这一点,使代码在不传递条件后执行函数
- 如何在执行此特定onclick事件时执行JavaScript函数
- RegExp:匹配Javascript中除regex值之外的所有内容
- 如何在从浏览缓存加载页面时执行javascript
- Jquery表单验证插件-如果选中复选框,如何在提交时执行某些操作
- JavaScript RegExp:测试和执行
- Javascript对捕获的regexp执行算术
- 为什么这个RegExp执行导致无限循环
- JavaScript RegExp测试方法工作不稳定,我的意思是第一次执行和第二次执行的结果不同