Javascript对捕获的regexp执行算法
我想将我的标题从默认值替换为Javascript对捕获的regexp执行算法,javascript,jquery,regex,Javascript,Jquery,Regex,我想将我的标题从默认值替换为“*number*新邮件|默认值” 这是我的代码,它从默认更改为1新消息fine,但它从不超过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'
“*number*新邮件|默认值”
这是我的代码,它从默认更改为1新消息
fine,但它从不超过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
返回一个新字符串,因此您必须再次使用text
将文本设置为结果。replace
返回一个新字符串,因此,您必须再次使用text
将文本设置为结果。我最近遇到了这个问题,问题是在replace函数的第二个参数内调用函数。$1仅在直接在字符串文本中调用时有效,而不是作为函数的字符串参数调用
另一个问题是$('title').text().replace(regexp,(parseInt(“$1”)+1.toString())
将返回一个字符串。您需要像在else块中一样,将要分配文本的值作为text()
函数的函数参数进行传递
试试这个:
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:我最近遇到了这个问题,问题是在replace函数的第二个参数中调用函数。$1仅在直接在字符串文本中调用时有效,而不是作为函数的字符串参数调用 另一个问题是
$('title').text().replace(regexp,(parseInt(“$1”)+1.toString())
将返回一个字符串。您需要像在else块中一样,将要分配文本的值作为text()
函数的函数参数进行传递
试试这个:
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')
和一个jsiddle:您应该使用一个函数作为第二个参数,您还需要设置新值:
var title = $('title').text();
$('title').text(title.replace(regexp, function(m) { return parseInt(m, 10) + 1) }));
而且,像往常一样,在调用时不要忘记基数参数,否则迟早会让您感到意外。您应该使用函数作为第二个参数,您还需要设置新值:
var title = $('title').text();
$('title').text(title.replace(regexp, function(m) { return parseInt(m, 10) + 1) }));
而且,像往常一样,在调用时不要忘记基数参数,否则迟早会感到意外。只是好奇,为什么在这个实现中使用
match
overtest
?另外,您能否提供$('title').text()
可能包含的内容的一个或多个示例?(最后,您确定它不是#title
或.title
作为选择器吗?)为什么要这样做parseInt($1”)
?这将给你NaN
@Brad,title-是页面的标题,选择器应该可以工作。@interstarr\u Coder:Touche,我有隧道视觉,只想到身体的内容。好主意。只是好奇,为什么在这个实现中使用match
overtest
?另外,您能否提供$('title').text()
可能包含的内容的一个或多个示例?(最后,您确定它不是#title
或.title
作为选择器吗?)为什么要这样做parseInt($1”)
?这将给你NaN
@Brad,title-是页面的标题,选择器应该可以工作。@interstarr\u Coder:Touche,我有隧道视觉,只想到身体的内容。很好的调用。+1我不知道函数是第二个参数。这是一个很好的解决方案。谢谢,这很有效!还感谢您提到,我不应该假设在所有浏览器中,默认情况下parseInt都以10为基数。@LanguagesNameAfterCofe:我倾向于认为将第二个参数保留为parseInt
可选是JavaScript规范中的一个错误。您几乎不希望parseInt
猜测基数,因此parseInt的接口是(IMHO)被设计破坏。但现在无法更改:)+1我不知道该函数作为第二个参数。这是一个很好的解决方案。谢谢,这很有效!还感谢您提到,我不应该假设在所有浏览器中,默认情况下parseInt都以10为基数。@LanguagesNameAfterCofe:我倾向于认为将第二个参数保留为parseInt
可选是JavaScript规范中的一个错误。您几乎不希望parseInt
猜测基数,因此parseInt的接口是(IMHO)已被设计破坏。但现在无法更改:)