gpt4 book ai didi

Javascript正则表达式匹配最后一个单词,无论特殊字符如何

转载 作者:行者123 更新时间:2023-11-28 20:27:41 26 4
gpt4 key购买 nike

我们使用此脚本来更改句子中的最后一个单词。

$div = $('.cPageHeader h2');
$div.html($div.text().replace(/(\w+?)$/, '<span class="cOrange">$1</span>'));

只要不涉及特殊字符,这种方法就可以正常工作。

一旦我们有了像 <h2>International fancy stüff</h2> 这样的 header 突出显示出错。只有 ff 会突出显示。如果行尾有一个字符 (!-.?) ,也会发生同样的错误。

有人可以更改脚本,以便突出显示最后一个完整单词(包括附加的标点符号),而不管任何重音字符吗?

最佳答案

我建议:

$div = $('.cPageHeader h2');
$div.html($div.text().replace(/(\S+?)$/, '<span class="cOrange">$1</span>'));

JS Fiddle demo .

这基本上会查找字符串末尾的所有非空白字符,尽管如果您的字符串以空白结尾,则不会突出显示(因此可能值得首先 trim 字符串,只是为了确定。

以下内容复制了上面的内容,但对尾随空格的容忍度更高一些:

var $div = $('#demo');
$div.html($div.text().replace(/\b(\S+?)(\b|(?:\s+))$/, '<span class="cOrange">$1</span>'));

JS Fiddle demo .

这匹配:

  • \b:字边界;
  • \S+:一个或多个非空白字符的序列;
  • (\b|(?:\s+)):另一个单词边界一个或多个空白字符的序列。

再次更新,因为原始表达式中的编号匹配($1)显然已被弃用,或者很快就会被弃用(尽管我无法找到对备份那个特定的记忆,所以也许要保留一点盐),并使用一个函数来代替:

var $div = $('#demo');
$div.html($div.text().replace(/\b(\S+?)(\b|(?:\s+))$/, function(a){
return '<span class="cOrange">' + a + '</span>';
}));

JS Fiddle demo .

引用文献:

关于Javascript正则表达式匹配最后一个单词,无论特殊字符如何,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17069122/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com