使用Regex排除标签中的尾随点
Exclude a trailing dot in hashtag using Regex
我正在尝试将文本中的标签转换为一些<a href="/tag/...">...</a>
链接。
我尝试使用的代码是
text.replace(/#([^#'s@]+)/ig, "<a href='/tag/$1'>#$1</a>")
但当测试文本如下时,它失败了
blah blah #example.
尾随点将匹配,结果链接将变为
blah blah <a href='/tag/example.'>#example.</a>
这不是我想要的结果。是否有任何方法可以排除尾随点,但将点保持在每个哈希标签之间?类似blah blah #keep.the.dot.in.between #example2
这是一把小提琴http://jsfiddle.net/quvhfky8/
text.replace(/#([^#'s@]*[^.'s])+/ig, "<a href='/tag/$1'>#$1</a>")
以上内容应该能满足您的需求。
它将忽略"#hello"上的尾随句号,但捕获"#hello.whatever"它还将排除任何最后一个点,例如"#hello.whatever."将捕获,就好像最后一个点将不在"#hello.whatever"一样
这里有一个链接,可以向您展示它的实际操作:http://regexr.com/3ao8lRegexr是一个测试模式的好网站!
如果这不是你想要的,请发表评论,我会尽力照顾你。
您可以使用:
'blah blah #this.is.example.'.replace(/#([^#'s@]*[^.])/g, "<a href='/tag/$1'>#$1</a>")
"blah blah <a href='/tag/this.is.an.exampl'>#this.is.example</a>."
我认为您可以使用#([^#'s@]+)(?=$|'b)
regex来利用word boundary
锚点。此外,我更喜欢使用"
双引号(我只是更喜欢这种风格):
var re = /#([^#'s@]+)(?=$|'b)/g;
var str = 'blah blah #example. blah blah #keep.the.dot.in.between #example2';
var subst = '<a href="/tag/$1">#$1</a>';
var result = str.replace(re, subst);
document.getElementById("res").innerHTML = result;
<div id="res"/>
相关文章:
- RegEx删除空属性?例如,如果(class=“”||class=“”)移除;否则就下课
- Regex代码只允许一个空格
- Regex匹配除“”之外的所有字符;.js”;
- RegExp:匹配Javascript中除regex值之外的所有内容
- Sencha Touch构建-排除文件
- Javascript RegEx validator
- 使用regex的jquery keydown绑定不会验证撇号和句点
- 使用Regex排除标签中的尾随点
- Regex检测单个'仅排除两个''
- 电子邮件验证Javascript+RegEx,但排除某些域
- Js替换和Regex排除一个单词
- Regex获取字符和空白之间的字符串,并排除第一个分隔符
- 在JavaScript中,如何使用regex进行匹配,除非单词在排除的单词列表中
- Regex测试字符串包含一个特定的模式,并排除特定的符号使用javascript
- 如何让RegEx获取整个URL..从http开始,获取后面的所有内容,直到出现空白以及如何排除某些字符
- Javascript regex将其排除在括号内
- Regex,它可以通过使用负环顾来排除子字符串
- RegEx在javascript:搜索ID与排除一些整数
- 如何排除字母字符&以零开头的数字,使用RegEx
- Regex exclude不't仅排除字符串的第一个字符