我正在尝试将文本中的主题标签转换为某些<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/3ao8l
Regexr是一个测试模式的好网站!

如果这不是您想要的,请发表评论,我会尽力满足您的要求。

关于javascript - 使用正则表达式排除主题标签中的尾随点,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29417983/

10-11 11:22