Javascript正则表达式匹配最后一个单词,而不考虑特殊字符
我们用这个脚本来改变句子中的最后一个单词Javascript正则表达式匹配最后一个单词,而不考虑特殊字符,javascript,regex,Javascript,Regex,我们用这个脚本来改变句子中的最后一个单词 $div = $('.cPageHeader h2'); $div.html($div.text().replace(/(\w+?)$/, '<span class="cOrange">$1</span>')); $div=$('.cPageHeader h2'); $div.html($div.text().replace(/(\w+?)$/,“$1”); 只要不涉及特殊字符,这种方法就可以很好地工作 只要我们有一个标题,比
$div = $('.cPageHeader h2');
$div.html($div.text().replace(/(\w+?)$/, '<span class="cOrange">$1</span>'));
$div=$('.cPageHeader h2');
$div.html($div.text().replace(/(\w+?)$/,“$1”);
只要不涉及特殊字符,这种方法就可以很好地工作
只要我们有一个标题,比如International fancy stüff
,突出显示就会出错。只有ff将突出显示。如果行的末尾有一个字符(!-.?)
,则会发生相同的错误
是否有人可以更改脚本,以便突出显示最后一个完整单词(包括附加标点符号),而不考虑任何重音字符 我建议:
$div = $('.cPageHeader h2');
$div.html($div.text().replace(/(\S+?)$/, '<span class="cOrange">$1</span>'));
参考资料:
- 我建议:
$div = $('.cPageHeader h2');
$div.html($div.text().replace(/(\S+?)$/, '<span class="cOrange">$1</span>'));
参考资料:
$div.text().replace(/(\S+)$/, '<span class="cOrange">$1</span>')
$div.text()。替换(/(\S+)$/,“$1”)
无论如何,您都希望在匹配中包含尾随标点符号,因此\w+
从来都不是适合此作业的工具。通过这种方式,您不必将非ASCII字符(如u
)视为单词字符
仅供参考,使用像
\s+?
这样不情愿的量词没有意义,因为您一直在匹配字符串的末尾。在这种情况下,它不是不正确的,只是毫无意义。这应该是您所需要的全部:
$div.text().replace(/(\S+)$/, '<span class="cOrange">$1</span>')
$div.text()。替换(/(\S+)$/,“$1”)
无论如何,您都希望在匹配中包含尾随标点符号,因此\w+
从来都不是适合此作业的工具。通过这种方式,您不必将非ASCII字符(如u
)视为单词字符
仅供参考,使用像
\s+?
这样不情愿的量词没有意义,因为您一直在匹配字符串的末尾。在这种情况下没有错,只是毫无意义。Nifty\S
的意思是“除了空格字符以外的任何东西”,包括\t
和\n
我知道在Perl中不鼓励使用编号组引用,如$1
,但我从未听说过JavaScript。另外,在这里使用\b
是不正确的。只有当第一个和最后一个字符始终是单词字符,并且您不能假设它们是单词字符时,这才有效。这就是为什么您必须首先从\w+
切换到\s+
的原因。噢,这只是Perl吗?老实说,我记不起我是在哪里遇到这个警告的(而且谷歌在我的搜索中也没有找到任何有意义的东西)\S
的意思是“除了空格字符以外的任何东西”,包括\t
和\n
我知道在Perl中不鼓励使用编号组引用,如$1
,但我从未听说过JavaScript。另外,在这里使用\b
是不正确的。只有当第一个和最后一个字符始终是单词字符,并且您不能假设它们是单词字符时,这才有效。这就是为什么您必须首先从\w+
切换到\s+
的原因。噢,这只是Perl吗?老实说,我记不起我是在哪里遇到这个警告的(而且谷歌在我的搜索中没有任何有意义的东西)。不过,我认为你需要使用html()
,除非他想在实际文本中使用。
。我删除了这个部分,以便我可以集中精力处理与正则表达式相关的内容。我认为你需要使用html()
,尽管如此,除非他想要实际文本中的…
,否则我删除了该部分,以便集中精力处理与正则表达式相关的内容。