Regex,替换所有以@开头的单词
Regex, replace all words starting with @
我有一个正则表达式,它将所有以@开头的单词放入span标记中。我已经完成了所需要的,但我不确定我是否完全理解我在这里所做的。
content.replace(/(@'S+)/gi,"<span>$1</span>")
- ()的意思是匹配一个完整的单词,对吧
- @的意思是从@开始
- ''S的意思是"后面跟着任何东西直到空白"
但是,为什么不在''S后面加+号,它只匹配第一个字母呢?
任何意见都将不胜感激。
'S
是任何非空白字符,a+
表示一个或多个。所以
@'S
->一个@,后跟一个非空白字符。
@'S+
->@后跟一个或多个非空白字符
共享代码,将标签更改为链接
var p = $("p");
var string = p.text();
p.html(string.replace(/#('S+)/gi,'<a href="http://twitter.com/hashtag/$1">#$1</a>'));
<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>
content.replace(/(@'S+)/gi,"<span>$1</span>")
(@'S+)
是捕获@
后接1个或多个(+
表示1个或更多)非空白字符('S
是非空白字符)的捕获组g
表示全局,即替换所有实例,而不仅仅是第一个匹配i
表示不区分大小写
CCD_ 12获取由第一捕获组捕获的内容。
因此,i
是不必要的,但不会影响任何事情。
/(@'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
''S的意思是"后面跟着任何东西直到空白"。
'S
不是这个意思。它是"任何不是空白的字符",也就是说,一个字符不是空白。
相关文章:
- 将组成单词的字符添加到数组的开头
- 匹配由单个空格分隔的单词,单词的开头或结尾不能有空格
- 如何在搜索框中获取从特定字母开头的单词
- 如何使用 JavaScript 获取所有以单词开头的 cookie
- 如何将有角度的文本区域设置为仅以特定单词开头
- Regex,替换所有以@开头的单词
- Javascript正则表达式匹配多个单词中至少一个以数字开头的单词,但至少匹配两个单词
- 如何隐藏所有以相同单词开头的 DIV,但一个具有特定值的 DIV 除外
- 替换以下划线开头的单词
- 正则表达式保留/匹配任何以特定字符开头的单词
- 获取以@开头的单词,例如正则表达式和javascript提到的Facebook
- JavaScript单词搜索,从单词的开头开始带空格和不带空格
- JavaScript正则表达式搜索每个单词和后续单词的开头
- 以相同元音字母开头和结尾的匹配单词
- 在开头或结尾使用特殊字符匹配单词
- 在 HTML 5 表单中每个单词的开头添加一个井号标签 (#)
- 提取 php 字符串中以 $ 开头的单词
- 如何在javascript中用一个特殊字符开头的单词内的空格替换下划线
- Javascript/REGEX:删除字符串中以特定字母开头的特定文本(单词),单词之间用空格分隔
- 只允许HTML字段以某些单词开头