我有这个正则表达式,它将所有以@开头的单词放入span标签中。 我已经完成了所需要的但我不确定我完全理解我在这里做了什么。
content.replace(/(@\S+)/gi,"<span>$1</span>")
但是为什么如果不在\ S之后添加+符号,它只匹配第一个字母?
任何意见都会受到赞赏。
答案 0 :(得分:5)
\S
是任何非空格字符,a+
表示 中的一个或多个。所以
@\S
- &gt; @后跟一个非空白字符。
@\S+
- &gt; @后跟一个或多个非空白字符
答案 1 :(得分:2)
content.replace(/(@\S+)/gi,"<span>$1</span>")
(@\S+)
是一个捕获组,捕获@
后跟1个或多个(+
表示1个或更多)非空白字符(\S
是非空格字符)
g
表示全局,即替换所有实例,而不仅仅是第一场比赛
i
表示不区分大小写
$1
获取第一个捕获组捕获的内容。
因此,i
是不必要的,但不会影响任何事情。
答案 2 :(得分:0)
/(@\S+)gi/
1st Capturing group (@\S+)
@ matches the character @ literally
\S+ match any non-white space character [^\r\n\t\f ]
Quantifier: Between one and unlimited times, as many times as possible, giving back as needed [greedy]
g - all the matches not just first
i - case insensitive match
答案 3 :(得分:0)
共享代码以将主题标签更改为链接
var p = $("p");
var string = p.text();
p.html(string.replace(/#(\S+)/gi,'<a href="http://twitter.com/hashtag/$1">#$1</a>'));
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<p>Test you code here #abc #123 #xyz</p>
&#13;
答案 4 :(得分:-2)
\ S表示“在空格之前有任何东西”。
这不是\S
的含义。它是“任何不是空格的字符”,也就是说,一个字符不是空格。