为什么正则表达式/(^ \ w +)/匹配任何句子中的第一个单词(用HTML格式)?

时间:2017-04-08 15:09:21

标签: javascript jquery regex

我是初学者。我正在编写一个代码,使每个<p>句中的第一个单词变为粗体。所以我找到了一个解决方案,说正则表达式/(^\w+)/与句子的每个第一个单词匹配。

我不明白为什么?我清楚地了解^\w的含义。我有点理解+的含义。

我不明白为什么所有这些在一起:/(^\w+)/表示句子的第一个单词。

2 个答案:

答案 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] );
  });
}