我是初学者。我正在编写一个代码,使每个<p>
句中的第一个单词变为粗体。所以我找到了一个解决方案,说正则表达式/(^\w+)/
与句子的每个第一个单词匹配。
我不明白为什么?我清楚地了解^
和\w
的含义。我有点理解+
的含义。
我不明白为什么所有这些在一起:/(^\w+)/
表示句子的第一个单词。
答案 0 :(得分:0)
/\w/g
将返回字符串的所有单个字符。
当您在正则表达式中包含/\w+/g
时,正则表达式+
将返回输入字符串中显示的所有字词。如果您在此之前添加^
- &gt; /^\w+/g
,它标识字符串开头的第一个匹配单词。
希望我的解释清楚。如果您需要更多信息,请告诉我。您可以分别尝试所有这三个以获得更清晰。
答案 1 :(得分:0)
因为那是你输入的x)!
以下是您的表达的详细信息:
/
RegExp start
(
表达式组的开头
^
字符串标记的开头
\w
一个单词字符(相当于[a-zA-Z0-9]
)
+
量词,意思是之前的1 <= amount < +inf
(此处为单词字符)
)
结束表达式组
/
RegExp结束
因此,它从字符串的开头匹配任何数量(从1到+ inf)的单词字符,并在遇到另一个字符(不是单词)时结束捕获/匹配。 你的句子末尾可能有一个字符串的结尾,因为它只匹配我最后一个字符串的第一个单词(即使有标点符号)。
如果你想让每个<p>
的第一个单词变为粗体,请尝试这一点(未针对细节进行优化并理解清醒):
function boldifyFirstWordOfP(){
var $p_arr = $("p");//cache all P
var p_content_arr;
$p_arr.each(function(index, elem){
p_content_arr[index] = $(this).html();//get all innerHTML content
});
for(var i=0 ; i < p_content_arr.length ; i++){
p_content_arr[i] = p_content_arr[i].replace(/(\w+)/g,"<b>$1</b>");//make first word bold
}
$p_arr.each(function(index, elem){
$(this).html( p_content_arr[index] );
});
}