我有一个使用JavaScript @mention库的评论表单,它允许我将一些评论文本保存到我的服务器,如'This is a message for @[Kenneth Auchenberg](user:53453) and @[JasonDavis](user:1)'
当我在页面上显示评论HTML时,我只需要名称而不是用户ID ... 'This is a message for @Kenneth Auchenberg and @JasonDavis'
我需要转换此字符串...
var commentStr = 'This is a message for @[Kenneth Auchenberg](user:53453) and @[JasonDavis](user:1)';
进入这个字符串......
var cleanCommentStr = 'This is a message for @Kenneth Auchenberg and @JasonDavis';
如何使用JavaScript删除包含在名称周围的不良字符?
更新
我可能只是采用不同的方法,并在我的注释数据库表中添加一个新列,以保存@的用户列表,然后在保存注释文本之前从注释中删除这些内容。创建评论时我真的只需要用户ID,因此我可以为该用户生成通知。之后我可以在评论文本中显示用户名。
答案 0 :(得分:3)
您可以将String#replace
与RegEx一起使用。
/@\[([\w\s]+)\][^)]+\)/
RegEx说明:
@\[([\w\s]+)\]
:匹配@[
后跟任何字母数字字符,下划线和空格一次或多次,然后跟]
。括号()
用于将用户名放在第一个捕获的组中 - $1
。[^)]+\)
:匹配任何内容,直到)
。因此,在@[blah blah]
。g
:全球旗帜。替换@$1
将@[blah blah](anything)
替换@blah blah
。这里$1
是第一个被捕获的组,即方括号内的字符串。
<强>演示:强>
var commentStr = 'This is a message for @[Kenneth Auchenberg](user:53453) and @[JasonDavis](user:1)';
commentStr = commentStr.replace(/@\[([\w\s]+)\][^)]+\)/g, '@$1');
document.body.innerHTML = commentStr;