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
over
test
?另外,您能否提供
$('title').text()
可能包含的内容的一个或多个示例?(最后,您确定它不是
#title
.title
作为选择器吗?)为什么要这样做
parseInt($1”)
?这将给你
NaN
@Brad,title-是页面的标题,选择器应该可以工作。@interstarr\u Coder:Touche,我有隧道视觉,只想到身体的内容。好主意。只是好奇,为什么在这个实现中使用
match
over
test
?另外,您能否提供
$('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)已被设计破坏。但现在无法更改:)